因为工作需要,所以就慢慢配置两台Linux服务器上面的MYSQL数据库,实现单向数据库的同步,同步数据库的条件是:
(1)两服务器上的数据库的名字要相同。(2)数据库的表的结构要相同,不同一个数据库多一张表,一个数据库少一张表。(3)只能高版本的数据库同步低版本的数据库,因为mysql是向下兼容的。所以,主服务器master是低版本的,从服务器slave是高版本的。
假设数据库名为test,数据库的用户为root,密码为123456,则进行同步配置如下:
一,先配置主服务器master:
1,找到mysql的配置围巾my.cnf,不同的linux版本my.cnf的存放位置都不同,这点得注意。
2,找到[mydqld],在里面添加如下:
server-id=1
log-bin=mysql-bin
binlog-do-db=test
保存退出,登录数据库,查看是否起作用,在数据库下面输入命令show master status
+------------------+----------+-------------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+-------------------+------------------+
| mysql-bin.000064 | 1813 | test |
+------------------+----------+-------------------+------------------+
如上所示,把File,Position,Binlog_Do_DB三个选项的复制好,待会要用到。
二,配置从服务器slave
1,同样是先找到my.cnf,用vim打开my.cnf
2,在my.cnf的mysqld下面配置如下:
server-id=2
replicate-do-db=test
保存退出,然后登录数据库,在数据库里面输入如下命令:
change master to master_host=‘IP‘,master_user=‘root‘,master_password=‘123456‘, master_log_file=‘mysql-bin.000064‘,master_log_pos=1813;
重启mysql,然后进入数据库里面输入如下命令查看:
show slave status\G;
如果出现这些就表明配置成功:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: test
三,配置的注意事项
1,mysql5.1.版本之后,不能再使用master-host,master-user这些变量来配置slave了,否则会出错,只能使用这命令来配置:
change master to master_host=‘IP‘,master_user=‘root‘,master_password=‘123456‘, master_log_file=‘mysql-bin.000064‘,master_log_pos=1813;
这些我弄了几天终于搞清楚了。
2,配置之后必须重启。
3,同步是这样的,当master发生数据的增加,删除,改变的时候,slave都可以改变,但是slave的操作不影响master
4,File | Position | Binlog_Do_DB这三项都是随时同步改变的。