MySQL主从复制

本文详细介绍MySQL主从复制的配置步骤,包括开启二进制日志、数据备份与导入、权限设置、复制过滤等关键操作,适用于MySQL 5.6及5.7版本。

MySQL主从复制:

1.如果master已经存在数据库或者数据,需要先将master上的数据线备份下来,

然后导入到从服务器上面去。

在备份之前,先要开启master中的二进制日志。

查看my.cnf位置 whereis my.cnf 默认是/etc/my.cnf

vi  /etc/my.cnf

增加如下内容:

server-id=1

log-bin=/var/lib/mysql/mysql-bin

然后重启master

【说明】

server-id:唯一标识id

log-bin:二进制日志目录和文件前缀,配置此项,表示开启了二进制日志记录功能

 

2.master上面执行导出命令:

mysqldump -uroot  --single-transaction --master-data=2 --triggers --routines --all-databases > ~/abc.sql  记录文件中

【说明】

保证导出的一致性状态--single-transaction

将当前服务器的binlog的位置和文件名追加到输出文件,--master-data

 

3.拷贝SQL到从服务器

在从服务器上面执行:

scp root@172.16.68.109:/root/abc.sql ~

 

4.导出到MySQL

slave上面执行:

mysql -uroot -p < ~/abc.sql

 

5.master中执行授权复制的权限给slave

GRANT REPLICATION SLAVE ON *.* To 'repl'@'%' IDENTIFIED BY 'mysql';

然后刷新权限表,不然不起作用

flush privileges;

 

6.slave开启二进制日志

  Mysql5.7 slave开启二进制日志

 vi  /etc/my.cnf  作用域[mysqld]

 server-id=2

 log-bin=/var/lib/mysql/mysql-bin

 

  Mysql5.6 Slave数据库配置

  vi  /etc/my.cnf  作用域[mysqld]

server-id=2

relay-log=slave-relay-bin

relay-log-index=slave-relay-bin.index

 

  如果vm是克隆的话,就可能出现uuid冲突,那么修改data目录下   /var/lib/mysql/auto.cnf. 删除掉就行了

 

7.重启slave

 

8.如果之前这台slave已经做过从机,先清空之前的relay-log

  reset slave;

 

9.slave执行change master语句

change master to master_host='115.159.66.82',master_user='repl',master_password='mysql',master_log_file='mysql_bin.000013',master_log_pos=336;

#其中master_log_file和master_log_pos就是第二步导出文件中开头的记录

 

10 启动slave,并查看slave状态

start slave;

show slave status\G

查看IO threadSQL Thread线程是否为YES

如果是YES,表示主从复制成功。

 

11 验证

master中创建数据库,建表,插入记录。

slave中查看是否也同样创建了。

如果同样创建,说明主从复制验证成功。

 

12 查看二进制日志

mysqlbinlog --no-defaults mysql-bin.000001

 

13 一主多从何 一主一从配置一样。

14 多源复制  多主一从MySQL5.7支持

设置master_info_repository

1.修改 my.cnf,添加 master_info_repository=TABLE

2.在线修改

stop slave;
SET GLOBAL master_info_repository = 'TABLE';


在从服务器上执行下面两条SQL,多了 for channel

1.master 109

change master to master_host='172.16.68.109',MASTER_USER='repl_test1'

,MASTER_PASSWORD='Young_123456',MASTER_PORT=3306,

MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=607 for channel 'cl109';

2.master 108

change master to master_host='172.16.68.108',MASTER_USER='repl_test1'

,MASTER_PASSWORD='Young_123456',MASTER_PORT=3306,

MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=605  for channel 'cl108';

 

 

15 主从优化

1.在my.cnf中配置过滤条件

a)master

binlog-ignore-db=test//忽略复制的库,也就是不需要复制test

binlog-do-db=test// 需要复制的库

b)slave中配置(重点)

replicate-ignore-db=test

replicate -do-db=test

replicate-do-table=t1

replicate-ignore-table=t1

注意:一般配置这种过滤规则,在slave中比较合适需要重启mysql服务

 

2.在线调整复制的过滤规则 MySQL5.7 才支持

slave中做如下配置

1.停止slave中的SQL_Thread

stop slave sql_thread;

2.配置过滤规则

change replication filter replicate_ignore_db=(test2);

过滤多个表,用逗号隔开

3.重启slave中的SQL_Thread

START SLAVE SQL_THREAD;

 

 

 

 

 

 

 

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值