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 thread和 SQL 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;
本文详细介绍MySQL主从复制的配置步骤,包括开启二进制日志、数据备份与导入、权限设置、复制过滤等关键操作,适用于MySQL 5.6及5.7版本。
3221

被折叠的 条评论
为什么被折叠?



