在mysql已使用了一段时间,才上主从库架构的:
此时主服务器mysql在线正常运行一段时间了,不能随意停止。
只要mysql的bin日记是开启状态的那就好办,作为主库的mysql无需停止服务,在主库创建一个作为从库连接的用户和在从库配置连接主库的参数即可:
CHANGE MASTER TO
MASTER_HOST='10.98.22.100',
MASTER_USER='slave_user',
MASTER_PASSWORD='xxxxxx',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=123;
关键是的两个参数:
1 MASTER_LOG_FILE='mysql-bin.000001', 从哪个文件开始?
2 MASTER_LOG_POS=0; 从文件的第几条sql执行起?
在线的生产环境只要数据库有变化,用SHOW MASTER STATUS; 查询会发现MASTER_LOG_POS每次值都在变。
我们要先确定MASTER_LOG_FILE参数,再确定 MASTER_LOG_POS参数。
如何确定MASTER_LOG_FILE参数呢?直接查看主库mysql的bin日记文件,如下图:
发现mysql-bin文件是从第000004个开始的,还要确认这是第一个mysql-bin文件吗?直接打开查看
vi mysql-bin.000004
查看文件头发现有create database,说明确实是第一个日记文件,MASTER_LOG_FILE参数可以确定是这个文件名了
再说说MASTER_LOG_POS,它默认是从0开始的,首次同步只要设置成0即可,所以上面参数最终改成:
CHANGE MASTER TO
MASTER_HOST='10.98.22.100',
MASTER_USER='slave_user',
MASTER_PASSWORD='xxxxxx',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=0;
注意:mysql 从库安装最好要和主数据库版本一致,字符编码配置要一样,安装好从库不需要创建数据库,同步时会创建。
常见问题1
主库使用的不是默认端口3306,需增加MASTER_PORT参数指定端口,如下:
CHANGE MASTER TO
MASTER_HOST='10.98.22.21',
MASTER_PORT=53306,
MASTER_USER='slave_user',
MASTER_PASSWORD='xxxxxx',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=0;
参数配置错误,要想重置时:
-- 重置前要停止主从运行
stop slave;
RESET SLAVE;
查看状态:
SHOW SLAVE STATUS;
关于mysql主从同步教程:https://blog.csdn.net/qyhua/article/details/135291025