mysql主从复制实现方法
文章图片
- 准备好两台安装好了mysql的机器(安装在不同的机器上),如果是给予虚拟机复制的机器则需要修改/var/lib/mysql/auto.cnf 文件中的uuid 确保两台机器的uuid不一样
- 备份主库的数据到备库 两库一致
在主库上执行(已有数据)
执行命令
mysqldump-uroot -pBamboocloud@1234 -A--master-data=https://www.it610.com/article/2 --single-transaction -R -E --triggers --max-allowed-packet=64M>/tmp/full.sql
将二进制文件导入到 /tmp/full.sql 中
文章图片
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000008', MASTER_LOG_POS=3050;
MASTER_LOG_FILE和MASTER_LOG_POS的值记录下来留作备份后面主从复制的时候要用到
然后将full.sql传输到备库所在的机器上
scp /tmp/full.sql root@10.88.1.184:/tmp
连接到备库的mysql
执行下列命令:
关闭二进制文件
同步数据
开启二进制文件
set sql_log_bin =0;
source /tmp/full.sql
set sql_log_bin =1;
此时数据同步完成
- 分别配置主备库的mysql配置文件
server_id=1 #指定MySQL的id log-bin=mysql-bin #开启二进制日志文件 auto_increment_increment=2 auto_increment_offset=1 port=13306 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES -- sqlmode需要设置为非严格模式否则程序可能会报错 见https://www.cnblogs.com/zhoujinyi/p/8035413.html lower_case_table_names=1 default-storage-engine = INNODB #mysql 主从幂等模式 slave_exec_mode=IDEMPOTENT #跳过指定错误 slave-skip-errors=1032,1062#忽略错误# 更新快的表不同步先 replicate-ignore-table=bim.qrtz_scheduler_state replicate-ignore-table=bim.tb_jgroupsping
- 配置主从
a) 在主库上创建可供复制的特殊账号 创建语句如下GRANT REPLICATION SLAVE ON *.* to 'replication'@'%' identified by 'Bamboocloud@1234';
然后在从库上执行下列sql;
CHANGE MASTER TO MASTER_HOST = '10.88.1.73',
MASTER_USER = 'replication',
MASTER_PORT =13306,
MASTER_PASSWORD = 'Bamboocloud@1234',
MASTER_LOG_FILE = 'mysql-bin.000008',
MASTER_LOG_POS = 3050;
master_host是主服务器的ip
master_port=13306(这里没有配置,默认3306)
master_user:Master 服务器授权用户,也就是 Master 前面创建的那个用户
master_password:Master 服务器授权用户对应的密码
master_log_file:Master binlog 文件名
master_log_pos:Master binlog 文件中的 Postion 值 这个值代表从库从主库同步数据的节点(起点)
检查无误后则在从库可以开启线程
start slave;
然后检查状态
show slave status;
文章图片
主要检查项:
slave_io_running 和 slave_sql_running 两个项,都为
YES
则代表成功了,这时候主库会同步数据到从库.注意点
- 如果后续程序运行过程中show slave status;
发现两个指标有一个为NO,则说明程序断开了,需要检查 /var/log 下的mysql的日志,查看报错的原因,可以在配置文件my.cnf中指定主从复制为幂等模式 并跳过指定的错误
#mysql 主从幂等模式 slave_exec_mode=IDEMPOTENT #跳过指定错误 slave-skip-errors=1032,1062#忽略错误
- 配置主主复制同主从,只不过是在主机(从机)上反向配置一遍即可.
在相反的一台机器上给另外的一台机器配置可供主从复制的特殊账号
GRANT REPLICATION SLAVE ON *.* to 'replication'@'%' identified by 'Bamboocloud@1234';
用 show master status; 查看 master_log_file 和master_log_pos
并在下列命令中替换即可
MASTER_USER = ${masteruser},
MASTER_PORT = ${masterport},
MASTER_PASSWORD = ${masterpassword},
MASTER_LOG_FILE = ${master_log_file},
MASTER_LOG_POS = ${和master_log_pos};
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- py连接mysql
- 2019-01-18Mysql中主机名的问题
- MySql数据库备份与恢复
- mysql|InnoDB数据页结构
- mysql中视图事务索引与权限管理
- MYSQL主从同步的实现
- MySQL数据库的基本操作
- 复制阳光
- javaweb|基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统