MySQL基于日志点的复制配置
1.配置主数据库服务器
1.1 在主服务器上建立复制专用账号
create user ‘用户名’@‘IP段’ identified by ‘密码’;
1.2 为该账户授权
grant replication slave on . to ‘用户名’@‘IP段’;
1.3 修改主服务器数据库配置文件
#指定binlog文件名, 只要配置了名称即开启binlog
log_bin = mysql-bin
#服务id, 在集群中需唯一
server_id = 100
2.配置从数据库服务器
2.1 修改从服务器数据库配置文件
#指定binlog文件名, 只要配置了名称即开启binlog
log_bin = mysql-bin
#服务id, 在集群中需唯一
server_id = 201
#指定relay_log文件名
relay_log = mysql-relay-bin
#如果该从服务器作为其他从服务器的主服务器,则必须开启
log_slave_updates = on
#如果该从服务器是只读的, 则配置该值. 防止程序误操作
read_only = on
2.2 同步主数据库数据
1.冷拷贝 mysqldump --master-data=2 -single-transaction
示例:
mysqldump --single-transaction --master-data --triggers --routines --all-databases -uroot -p123456 >> all.sql
2.热拷贝 xtrabackup --slave-info
3.在从数据库服务器上启动复制链路
- 设置链路
change master to
master_host=‘主库ip’,
master_port=主库端口,
master_user=‘上面创建的账号’,
master_password=‘密码’,
master_log_file=‘binlog文件地址,从mysqldump文件中获取’,
master_log_pos=偏移量,从mysqldump文件中获取; - 启动链路
start slave - 停止链路
stop slave - 重置链路
reset slave - 查看链路状态
show slave status
注意: 如果执行start slave报 “ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository” , 可用reset slave重置链路后再启动.
4.优点
- 是MySQL最早支持的复制技术, bug相对较少
- 对SQL查询没有任何限制
- 故障处理比较容易
5.缺点
- 故障转移时重新获取新主的日志点信息比较困难