MySQL 主从复制(master->slave)
[ 2009/09/08 14:45 | by ipaddr ]
1、在MASTER主机(192.168.128.132)上创建数据库mytest:
create database mytest;
然后配置my.cnf
在[mysqld]配置段添加如下字段中增加
log-bin=mysql-bin.log
binlog-do-db=mytest #要同步的数据库的名字
server-id=1
重启mysql
进入MySQL,然后同步账号:
mysql>grant replication slave on *.* to ‘replication’@'%’ identified by ‘aaa’;
mysql>show master status;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000008 | 106 | blog | |
+——————+———-+————–+——————+
2、配置SLAVE数据库(192.168.128.130 and 192.168.128.133)
分别进入MySQL创建数据库
mysql>create database mytest; #建一个与主服务器的数据库名字相同的数据库
mysql>quit;
3、在两个SLAVE数据库的[mysqld]配置段添加如下字段中增加
# 192.168.128.130
server-id=2
master-host=192.168.128.132
master-user=replication
master-password=aaa
master-connect-retry=60
replicate-do-db=mytest
# 192.168.128.133
server-id=3
master-host=192.168.128.132
master-user=replication
master-password=aaa
master-connect-retry=60
replicate-do-db=mytest
3、分别重启两个SLAVE数据库
4、分别进入两个SLAVE数据库中
在SLAVE1上(192.168.128.130)
mysql> slave stop;
Query OK, 0 rows affected (0.00 sec)
mysql> CHANGE MASTER TO
-> MASTER_HOST=’192.168.128.132′,
-> MASTER_USER=’replication’,
-> MASTER_PASSWORD=’aaa’,
-> MASTER_LOG_FILE=’mysql-bin.000008′,
-> MASTER_LOG_POS=106;
Query OK, 0 rows affected (0.03 sec)
mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)
在SLAVE2上(192.168.128.133)
mysql> slave stop;
Query OK, 0 rows affected (0.00 sec)
mysql> CHANGE MASTER TO
-> MASTER_HOST=’192.168.128.132′,
-> MASTER_USER=’replication’,
-> MASTER_PASSWORD=’aaa’,
-> MASTER_LOG_FILE=’mysql-bin.000008′,
-> MASTER_LOG_POS=106;
Query OK, 0 rows affected (0.03 sec)
mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)
然后,随便在那个SLAVE上
mysql> show processlist;
+—-+————-+———–+——+———+——+———————————————————————–+——————+
| Id | User | Host | db | Command | Time | State | Info |
+—-+————-+———–+——+———+——+———————————————————————–+——————+
| 3 | root | localhost | NULL | Query | 0 | NULL | show processlist |
| 4 | system user | | NULL | Connect | 13 | Waiting for master to send event | NULL |
| 5 | system user | | NULL | Connect | 13 | Has read all relay log; waiting for the slave I/O thread to update it | NULL |
+—-+————-+———–+——+———+——+———————————————————————–+——————+
以上信息表示同步成功!
4、同步测试过程
分别在主数据库上建立一个表,插入一条数据
在两个从数据库上看看是否更新
过程略。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
create database mytest;
然后配置my.cnf
在[mysqld]配置段添加如下字段中增加
log-bin=mysql-bin.log
binlog-do-db=mytest #要同步的数据库的名字
server-id=1
重启mysql
进入MySQL,然后同步账号:
mysql>grant replication slave on *.* to ‘replication’@'%’ identified by ‘aaa’;
mysql>show master status;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000008 | 106 | blog | |
+——————+———-+————–+——————+
2、配置SLAVE数据库(192.168.128.130 and 192.168.128.133)
分别进入MySQL创建数据库
mysql>create database mytest; #建一个与主服务器的数据库名字相同的数据库
mysql>quit;
3、在两个SLAVE数据库的[mysqld]配置段添加如下字段中增加
# 192.168.128.130
server-id=2
master-host=192.168.128.132
master-user=replication
master-password=aaa
master-connect-retry=60
replicate-do-db=mytest
# 192.168.128.133
server-id=3
master-host=192.168.128.132
master-user=replication
master-password=aaa
master-connect-retry=60
replicate-do-db=mytest
3、分别重启两个SLAVE数据库
4、分别进入两个SLAVE数据库中
在SLAVE1上(192.168.128.130)
mysql> slave stop;
Query OK, 0 rows affected (0.00 sec)
mysql> CHANGE MASTER TO
-> MASTER_HOST=’192.168.128.132′,
-> MASTER_USER=’replication’,
-> MASTER_PASSWORD=’aaa’,
-> MASTER_LOG_FILE=’mysql-bin.000008′,
-> MASTER_LOG_POS=106;
Query OK, 0 rows affected (0.03 sec)
mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)
在SLAVE2上(192.168.128.133)
mysql> slave stop;
Query OK, 0 rows affected (0.00 sec)
mysql> CHANGE MASTER TO
-> MASTER_HOST=’192.168.128.132′,
-> MASTER_USER=’replication’,
-> MASTER_PASSWORD=’aaa’,
-> MASTER_LOG_FILE=’mysql-bin.000008′,
-> MASTER_LOG_POS=106;
Query OK, 0 rows affected (0.03 sec)
mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)
然后,随便在那个SLAVE上
mysql> show processlist;
+—-+————-+———–+——+———+——+———————————————————————–+——————+
| Id | User | Host | db | Command | Time | State | Info |
+—-+————-+———–+——+———+——+———————————————————————–+——————+
| 3 | root | localhost | NULL | Query | 0 | NULL | show processlist |
| 4 | system user | | NULL | Connect | 13 | Waiting for master to send event | NULL |
| 5 | system user | | NULL | Connect | 13 | Has read all relay log; waiting for the slave I/O thread to update it | NULL |
+—-+————-+———–+——+———+——+———————————————————————–+——————+
以上信息表示同步成功!
4、同步测试过程
分别在主数据库上建立一个表,插入一条数据
在两个从数据库上看看是否更新
过程略。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>