Linux下mysql主从AB复制配置

mysql服务器的主从配置,这样可以实现读写分离,也可以在主库挂掉后从备用库中恢复
需要两台机器,安装mysql,两台机器要在相通的局域网内
主机A: 192.168.1.100
从机B:192.168.1.101
可以有多台从机
1、先登录主机 A

mysql>GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.1.101' IDENTIFIED BY '123456';

赋予从机权限,有多台丛机,就执行多次

2、 打开主机A的my.cnf,输入

server-id=1    #主机标示,整数
log_bin=mysql-bin   #确保此文件可写
read-only=0  #主机,读写都可以
binlog-do-db=test   #需要备份数据,多个写多行
binlog-ignore-db=mysql #不需要备份的数据库,多个写多行
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
扩展配置
log-slave-updates=1 #这个参数一定要加上,否则不会给更新的记录些到二进制文件 里
slave-skip-errors=1 #是跳过错误,继续执行复制操作(可选)

3、设置表读锁

mysql>flush tables with read lock;

备份主库需要同步的数据库

mysqldump - u root -p test > test.sql

mysql>unlock tables; #解锁

最后导入到从库

4、打开从机B的my.cnf,输入

server-id = 2
log_bin = mysql-bin
replicate-do-db =test #只复制某个库
replicate-ignore-db=mysql #不复制某个库
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
#然后还需要进入服务器做些更改
mysql>change master to master_host='192.168.1.100',master_user='backup',master_password='123456', master_log_file='mysql-bin.000001',master_log_pos=107;
#此处的master_log_pos查看主机show master status \G状态下的文件偏移量Position

5、验证

在主机A中,mysql>show master status\G;
在从机B中,mysql>show slave status\G;

能看到大致这些内容

File: mysql-bin.000001
Position: 1374
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql

可以在主机A中,做一些INSERT, UPDATE, DELETE 操作,看看主机B中,是否已经被修改

常见问题:

mysql Slave_IO_Running:NO

解决方法:

mysql> change master to Master_Log_File='mysql-bin.000001',Master_Log_Pos=98; #master_log_pos查看主机show master status \G状态下的Position

Slave_SQL_Running:No

一般是事务回滚造成的:

mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/339.html