mysql主从 添加从库服务器 主库服务器已有数据情况下
waiting for more updates 表明本次同步信息已经接收完毕。其中master_log_file、master_log_pos 需要从主库查询获取;显示主库哪些线程正在运行,返回的结果是实时变化的;显示从库哪些线程正在运行,返回的结果是实时变化的;再次查看主从同步进程状态都是YES。查看主从同步进程状态都是NO。
0、网络策略开通
从机需要访问主机的3306端口,在从机上执行
telnet 主机IP 3306 需要能通。否则会因为网络原因导致配置mysql主从集群失败。
1、主库配置
1.1、锁定主库写操作
flush tables with read lock;
作用是不能再写入主库。
1.2、备份主数据库,用于导入从数据库实现同步
mysqldump -R -uroot -p <yourMysqlPassword> --host=127.0.0.1 --port=3306 --all-databases > /tmp/mysqlMasterBackupAllDatabases.sql
2、从库配置
2.1、使用主库备份文件恢复从库
1.3中备份的mysqlMasterBackupAllDatabases.sql 文件上传到 从库的/ 目录下。
mysql -uroot -p 登录进mysql命令行
然后执行
source /mysqlMasterBackupAllDatabases.sql;
这个命令的作用是使用主库备份文件恢复从库,保证从库和主库数据是一致的。
2.2、校验和主库是否一致
从库数据
主库数据
3、创建主从集群
3.1、主库需要配置
3.1.1、vi /etc/my.cnf 添加2行
vi /etc/my.cnf
文件最后添加2行内容
server-id=1
log-bin=/var/lib/mysql/mysql-bin
然后重启主机MySQL服务
systemctl restart mysqld.service
3.1.2、查看主库主从状态,记录file 和 position的值
show master status;
3.2、从库需要配置
3.2.1、vi /etc/my.cnf 添加一行
vi /etc/my.cnf
在末尾加入一行:
server-id=2
然后重启从机MySQL服务
systemctl restart mysqld.service
3.2.2、stop slave;
stop slave命令作用是停止从库的io进程和sql进程。
查看从库的主从同步进程状态都是NO,表明已经成功停止了从库的io进程和sql进程。
stop slave;
3.2.3、reset slave;
reset slave命令作用是清除以前存在的:从库同步主库的历史记录,作用是把从库重置成:从没有同步过主库的状态。
reset slave;
3.2.4、给从库指定主库的参数:
change master to master_host='x.x.x.x',master_port=3306,master_user='root',master_password='yourMysqlPassWord', master_log_file='mysql-bin.000007',master_log_pos=822090;
其中master_log_file、master_log_pos 需要从主库查询获取,参见1.2节。
3.2.5、start slave
start slave;
start slave命令作用是启动从库的io进程和sql进程。
查看从库的主从同步进程状态都是YES,表明已经成功启动了从库的io进程和sql进程。
再次查看从库的主从同步进程状态都是YES
show slave status\G;
3.2.6、查看从库主从状态
show slave status\G;
Seconds_Behind_Master: 0
0表示从库没有落后于主库,主库数据都同步到从库了,Seconds_Behind_Master的期望值是0。
Seconds_Behind_Master如果是正值,说明从库落后于主库,还没有同步完成,或者同步失败,为正直时需要注意排查确认同步状态。
4、 恢复主库写操作
unlock tables;
作用是恢复主库的写操作。
5、主从复制测试
5.1、主库插入1条数据
在主库的banji表中插入1条数据。
show full processlist;
显示主库哪些线程正在运行,返回的结果是实时变化的;
Master has sent all binlog to slave; waiting for more updates 表明本次同步信息已经发送完毕。
5.2、从库确认是否同步了这条数据
查看从库的banji表中是否同步了主库插入的那条数据。
show full processlist;
显示从库哪些线程正在运行,返回的结果是实时变化的;
Slave has read all relay log; waiting for more updates 表明本次同步信息已经接收完毕。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)