MySQL主从(Master-Slave)复制

心已入冬 提交于 2019-12-09 11:27:46

本文内容主要来源:官方文档中文版第6章“MySQL中的复制”。本文只记录配置要点。

1.主数据库配置(通常在/etc/my.cnf):

[mysqld]中加入以下几条配置:

server-id=1(为任意值)

log-bin=mysql-bin

binlog_do_db=你要复制的数据库(实际上是要做二进制日志的数据库)

binlog_ignore_db=mysql(要忽略的数据库)

重启MySQL服务器后进入client,创建数据库用户以便“从数据库”连接:

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
(用户名、密码以及从服务器主机地址可自定义)

然后刷新读写缓冲区并锁定表读写操作:

FLUSH TABLES WITH READ LOCK;
这个时候再另外连接到主机shell(不要关闭当前MySQL连接,否则锁定会解除),开始复制数据库到从数据库(事先要创建同名数据库,也可以使用“ mysqladmin -h 从服务器地址  create 数据库名”进行创建):

mysqldump --opt 要复制的数据库 -p主数据库root密码 -R -B | mysql -h从服务器地址 要复制的数据库名 -p从数据库root密码

复制完后,再切换到MySQL client执行:

SHOW MASTER STATUS;

记录FilePosition的值(binlog的位置),留待后用。接着执行:

UNLOCK TABLES;

现在可以切换到从服务器shell。

2.从服务器配置,数据库配置文件:

同样在my.cnf文件中加入:

server-id=1(为任意值,但不能与主数据库值或其它从数据库值相同)

然后连接client,执行如下命令:

CHANGE MASTER TO MASTER_HOST='主数据库地址',MASTER_USER='repl',MASTER_PASSWORD='slavepass',
MASTER_LOG_FILE='mysql-bin.000024',MASTER_LOG_POS=87167417;

最后的“MASTER_LOG_FILE”和“MASTER_LOG_POS”就是刚才在主机记录的数据。

最后执行命令启动从数据库复制线程:

start slave;
slave start;

参考:http://yahoon.blog.51cto.com/13184/33231

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!