参考自:《高性能MySQL》
主备的最新叫法:primary and replica
基本场景:对于新安装的主库和备库
1.创建复制账号
grant replication slave, replication client on *.* to '229_slave'@'10.10.3.229' identified by 'password';
replication slave
复制权限replication client
监控和管理复制的账号 的权限
两个权限都赋予上,方便后续互为主备的配置。
2.配置主库和备库
在主库的my.cnf文件中,修改为
log_bin =mysql-bin
server_id =226
配置二进制日志后,需要重启mysql,使用show master status
来检查是否成功开启。
备库上也要做类似的修改:
log_bin = mysql-bin
server_id=229
relay_log=/var/lib/mysql/mysql-relay-bin
log_slave_updates=1
read_only=1
log_slave_updates=1
允许备库将其重放的时间也记录到本上的二进制日志中
3.启动复制
告诉备库如何连接到主库,并重放其二进制日志。
不在my.cnf中配置,更加灵活。
change master to master_host='10.10.3.226' ,
master_user='229_slave',
master_password='root',
master_log_file='mysql-bin.000001',
master_log_pos=0;//根据master中的进行设置
运行 show master status 检查复制是否正常执行
启动:
start slave
show processlist\G
可以看到正在连接的进程。
在第三步的过程中若出现问题的,解决方法:
- mysql> reset slave; # 重點就是這行
- mysql> CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000001’, MASTER_LOG_POS=107; # 請依照自行環境設定
- mysql> start slave; # 就正常了.
- 註: 重新設置 slave, MASTER_LOG_FILE 和 MASTER_LOG_POS 會被清空, 所以需要重新設置.
为一个已有数据的数据库做从复制
为一个已有数据的数据库做从复制,必须先对其中的数据进行复制。
可以使用sqldump 进行全库复制。注意不要复制mysql啊啊啊啊啊,导致自己把用户名密码等一起覆盖了原来的库。。。。