MySQL设置主从同步及遇到问题处理

1.MySQL设置主从同步

首先在两个系统安装mysql,CentOS默认带的是mariadb,yum install mariadb -y

默认主库已经存在数据,在本例中要将test2021数据库同步到从库,主库系统:192.168.1.10,从库系统192.168.1.11

一、配置主库

1.在主库中创建账户并授权给从库服务器,刷新权限(账户在从库同步主库时用到)

GRANT REPLICATION SLAVE ON *.* to 'test'@'192.168.1.11' identified by 'test123456';

FLUSH PRIVILEGES;

2.主库开启二进制日志,在配置文件/etc/my.cnf中设置如下:

log-bin=/var/lib/mysql/logbin #开启二进制日志

server-id=1 #主库

binlog-do-db=test2021 #同步的数据库是test2021

log-bin-index=/var/lib/mysql/logbinindex.index #后续报错1236添加上了二进制日志index参数

保存退出,并重启mysql服务:systemctl restart mariadb

3.进入主库,查看master状态 SHOW MASTER STATUS;记录二进制日志的参数FILE及POSITION参数,从库设置需要使用

MariaDB [(none)]> show master status;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| logbin.000001 |      245 | test2021      |                  |
 

二、配置从库

1.设置配置文件/etc/my.cnf

server-id=2;

保存退出,重启mysql服务

2.mysql5.5以上不支持在配置文件设置参数,在mysql里面设置同步参数

CHANGE MASTER TO MASTER_HOST='192.168.1.10',

MASTER_USER='test',

MASTER_PASSWORD='test123456',

MASTER_PORT=3306,

MASTER_LOG_FILE='logbin.000001',

MASTER_LOG_POS=245;

3.启动从库并查看同步状态

start slave;

show slave status\G;

Slave_IO_Running和Slave_SQL_Running都为YES同步成功

三、备份主库数据传到从库

停止主库的数据更新操作:flush tables with read lock;

备份数据库:mysqldump -uroot -p123456 test2021 > test2021.sql

传输到从库:scp test2021.sql root@192.168.1.11:/root/

主库解锁:unlock tables;

从库创建同名数据库:create database test2021

停止同步:slave stop;

将SQL还原到test2021:mysql -uroot -p test2021 < test2021.sql

查看主库的master状态,修改从库参数,再开启从库

此时对主库进行增删改查,从库同步

四、报错调试

1.1236报错

Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'

停止从库同步:stop slave;

在主库配置文件增加bin-log-index;

重启主库服务

主库:flush logs;Show master status\G; #刷新主库的二进制日志,并查看当前的二进制日志和position

从库:CHANGE MASTER TO MASTER_LOG_FILE='logbin.000006',MASTER_LOG_POS=245; 修改从库同步的二进制日志参数和pos参数,数值与主库查看一致

从库:start slave;show slave status\G; #开启从库并查看同步状态

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

上面两个参数都为 YES,则主从同步正常

2.Last_SQL_Error报错

Last_SQL_Error: Error 'Table 'test619.tb_eventtest' doesn't exist' on query. Default database: 'test619'. Query:

'INSERT INTO tb_eventtest(user,createtime) VALUES('MySQL',NOW())'

解决办法:

从库:stop slave;

主库:flush logs;Show master status\G; #刷新主库的二进制日志,并查看当前的二进制日志和position

从库:CHANGE MASTER TO MASTER_LOG_FILE='logbin.000006',MASTER_LOG_POS=245; 修改从库同步的二进制日志参数和pos参数,数值与主库查看一致

从库:start slave;show slave status\G; #开启从库并查看同步状态

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

上面两个参数都为 YES,则主从同步正常
 

主从设置部分参考https://www.cnblogs.com/zhoujie/p/mysql1.html 作者:zhoujie

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值