共计 1446 个字符,预计需要花费 4 分钟才能阅读完成。
日志复制分为基于日志点的复制和基于 GTID 的复制。本文就讲一下基于日志点的复制过程。
MySQL 基于 GTID 的复制 见 http://www.linuxidc.com/Linux/2016-09/135577.htm
1. 在主 DB 服务器上建立复制帐号。
create user‘repl’@ip 段 identified by‘pwd’;
create user repl@’192.168.1.%’ identified by ‘repl’;
授权
grant replication slave on *.* to‘repl’@ip 段;
grant replication slave on *.* to repl@’192.168.1.%’;
2. 配置主数据库服务器。
bin_log=mysql-bin
启用二进制日志,并指定日志名字。
server_id =100
需要指定 serverid,在复制集群中必须唯一。
3. 从服务器配置。
bin_log=mysql-bin
server_id=101
# 中继日志
relay_log=mysql-relay-bin
# 可选参数,是否把中继日志记录到当前的二进制日志中,
# 如果需要把当前从服务器,作为其他从服务器的复制源,则需要配置。
log_slave_update=on
# 安全配置参数,防止从写入
read_only=on
4. 初始化从服务器的数据
mysqldump , 此方法需要加锁。
参数:
–single-transaction:保证数据事务一致性,需要对数据库加锁,会造成阻塞。
-master-data=2 : 记录主库二进制文件的偏移量信息。
xtrabackup –slave-info 热备工具。
使用 innodb 存储引擎是不会阻塞。
mysqldump -uroot -p -P3308 –single-transaction –master-data –triggers –routines –all-databases >> all.sql
从服务器导入数据
mysql -uroot -p -P3309 <all.sql
5. 启动复制链路
需要在从服务器上操作。
change master to MASTER_HOST=’master_host_ip’,
MASTER_USER=’repl’,
MASTER_PASSWORD=’PWD’,
MASTER_LOG_FILE=’MYSQL_LOG_FILE_NAME’,
MASTER_LOG_POS=4;
change master to master_host=’localhost’,
-> master_user=’repl’,
-> master_password=’repl’,
-> MASTER_LOG_FILE=’mysql-bin.000005′, MASTER_LOG_POS=2162;
这段可以在导出的文件中查找。
show slave status \G
查看复制链路状态。
启动复制链路
start slave;
使用 show processlist 查看服务线程。
一个 IO 线程,一个 SQL 线程。
主服务器查看
启动了一个 dump 线程。
6. 验证复制效果:
在节点 A 执行。
1. 创建一个表。
2. 插入两条记录。
在从服务器上查询。
发现数据同步了。
优点:
1. 是 mysql 最早支持的复制技术,BUG 相对较少。
2. 对 SQL 查询没有任何限制。
3. 故障处理比较容易。
缺点:
故障转移时重新获取新主的日志点信息比较困难。
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-09/135576.htm