MySQL的主从复制
在这里分两个情况:1、两台服务器中都没有数据 2、主服务器上已经有数据,此时再开启从服务器 一、两台服务器中都没有数据在复制结构中从服务器的mysql的版本要比主服务器的一样或者高也行。
1、修改配置文件:
在主服务器上
修改/etc/my.cnf文件(配置文件所在由自己在安装时指定,不一定都在这个路径下 =。=)
vim /etc/my.cnf
/修改:
server-id = 1 (默认是1)
开启二进制日志定位到:log-bin
log-bin=mysql-bin 这个也是默认开启的
修改完成后重新启动mysql服务
# service mysqld restart
连接到mysql数据库创建用户并赋于复制的权限 mysql>GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO repl@'172.16.%.%' IDENTIFIED BY '123456';
2、在从服务器上 vim /etc/my.cnf
修改:
servier-id = 11 ## id号一定不能与主服务器的id号相同
关掉二进制日志
#log-bin=mysql-bin
添加如下内容: ##这些是开启中继日志的
relay-log=relay-bin
relay-log-index=relay-bin.index
修改完成后重启一下服务
# service mysqld restart 好了,配置文件修改完成了。
3、在主从服务器上各自清空一下日志,也是同时用命令: 在主服务器上:mysql>flush master;
在从服务器上:mysql> flush slave;
这样做要使主从服务器的日志位于同一个结点,否则这样会易出错。
4、清空日志后就可以在从服务器上连接到主服务器上了 mysql> CHANGE MASTER TO MASTER_HOST='172.16.35.1',MASTER_USER='repl',MASTER_PASSWORD='123456';
用命令:mysql> show slave status\G 来查看一下是否已经连接上
如果出现以下结果表明连接成功,则连接失败。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
失败的原因有多种:
最常见的情况分别是: 1、在主服务器上的用户可能出错
2、没有重新滚动一下主从服务器的日志,在连接前有必要重新滚动一下。
下面就可以测试了。
在主服务器上创建或者删除数据库、表,就可以同步到从服务器上了。
在从服务器上也可以查看到从服务器要比主服务器慢多少时间用命令:
mysql> show slave status\G
定位到:Second_Behind_Master:0 (0,表示时间说明没有延迟)
下面来介绍一下较常见的情况 二、主服务器上已经有数据,此时再开启从服务器
1、在开启从服务器之前要先把主服务器上的数据导入从服务器中。所以要先备份一下主服务器上的数据 # mysqldump --all-databases --lock-all-tables --master-data=2 > /tmp/slave.sql
2、将备份复制到从服务器中 # scp /tmp/slave.sql 172.16.35.2:/tmp/
3、在从服务器上,把备份导入服务器中
mysql> source /tmp/slave.sql 4、下面就可以连接了,但是在连接之前要先查看备份的文件
用命令head来查看
# head -30 /tmp/slave.sql ##查看前30行的
有一行是:
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=279;
说明要备份的位置是:MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=279
所以在连接之前一定要说明这个位置
5、下面来开始在从服务器上连接主服务器
mysql>CHANGE MASTER TO MASTER_HOST='172.16.35.1',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=279;
返回的结果:Query OK, 0 rows affected (0.02 sec)
说明连接成功
6、下面就可以启动从服务器了 mysql>start slave;
mysql>show slave status\G ##查看从服务器的状态是否连接成功
如下所示说明成功连接:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
mysql>start slave;
mysql>show slave status\G ##查看从服务器的状态是否连接成功
如下所示说明成功连接:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
最后再来测试一下。 在主服务器上创建或者删除数据库、表,就可以同步到从服务器上了。
MySQL的主从复制是MySqL双机热备份的比较常用的方法。但是从服务器不能有写操作。不过,还有一种备份方式主--主复制,也是双机热备份的一种方法,将在下篇博文介绍。
如果有什么不正确的地方还请指出,以便尽快的更改。谢谢