多数据源配置(一):mysql数据库主从关系配置
在linux环境下做主从关系配置,至少需要准备两台数据库,一台作为主库,另一台作为从库(如果条件好的话,也可以一主多从)。我们这边准备了两台数据库:172.10.2.53(主)、172.10.2.35(从)
一、主数据库的配置
1.进入Mysql的配置文件
vim /etc/my.cnf
2.最后添加三行
log-bin=mysql-bin #开启二进制日志
server-id=53 #设置server-id唯一值,标识主机
binlog-do-db=MYTC #指定某个库开启同步
3.重启Mysql服务
service mysqld restart
4.创建账号密码(此账号用于同步二进制数据用)
进入mysql(使用root用户)
mysql -uroot -p
输入密码后进入mysql控制台,然后创建同步用户
CREATE USER 'your_name'@'%' IDENTIFIED BY 'your_pwd';
查看用户是否创建成功
select user,host from mysql.user;
分配权限
GRANT REPLICATION SLAVE ON *.* TO 'your_name'@'%';
5.刷新权限
flush privileges;
6.查看master状态,记录二进制文件名File和位置Position,后面配从库要用
show master status;
结果图示如下,把file和position记录下来,从库配置要使用:
二、从数据库的配置
1.进入Mysql的配置文件
vim /etc/my.cnf
2.最后添加两行
server-id=35 #设置server-id唯一值,标识主机
replicate-do-db=MYTC #设定需要复制的数据库
3.重启Mysql服务
service mysqld restart
4.进入mysql(使用root用户)
mysql -uroot -p
5.执行如下SQL语句
CHANGE MASTER TO
MASTER_HOST='172.10.2.53',
MASTER_PORT=3306,
MASTER_USER='your_name',
MASTER_PASSWORD='your_pwd',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=1308;
解释:分别是主库的地址、端口、主库创建的同步账号、密码、主库二进制文件名File和位置Position
6.启动slave同步进程
start slave;
7.查看slave状态,当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了
show slave status\G;
8.可以改数据验证同步,可以stop slave;执行看看效果
问题踩坑
踩坑一:Slave_IO_Running:Connecting
解决方案:
在主库执行以下SQL:
ALTER USER 'your_name'@'%' IDENTIFIED WITH mysql_native_password BY 'your_pwd';
踩坑二:MySQL主从同步数据不一致(主要原因:从库对数据进行删除或新增,主库同步时报错)
主数据库锁表(当前表设为只读)
use MYTC;
lock table oc_log read;
把主数据库中的表拷贝到从数据库中的表中(替换不一致的表)
从数据库停止同步
stop slave;
从数据库重新设置从库同步主库的位置
CHANGE MASTER TO
MASTER_HOST='172.10.2.53',
MASTER_PORT=3306,
MASTER_USER='your_name',
MASTER_PASSWORD='your_pwd',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=1308;
从数据库开启同步
start slave;
主数据库解锁
unlock tables;