13-指定复制的数据库或者表
+------+---------------------+
+------+---------------------+
mysql> select * from repl_test_1;
可以使用 replicate-do-db、replicate-do-table、replicate-ignore-db、replicate-ignore-table 或replicate-wild-do-table 来指定从主数据库复制到从数据库的数据库或者表。有时用户只需要将关键表备份到从库上,或者只需要将提供查询操作的表复制到从库上,这样就可以通过配置这几个参数来筛选进行同步的数据库和表。
下面演示的例子是设置replicate-do-table的情况,首先在主数据库的test数据库中创建两个表 repl_test和 repl_test_1,然后从数据库启动的时候指定 replicate-do-table=test.repl_test,即只复制repl_test表。最后在主数据库中更新两个表,检查从数据库中数据复制的情况。
(1)首先检查主从数据库上两个表的记录,主从数据库是相同的:
mysql> select * from repl_test;
+------+---------------------+
| id | createtime |
+------+---------------------+
| 5 | 2007-07-24 16:29:49 |
1 row in set (0.00 sec)
Empty set (0.01 sec)
(2)关闭从数据库,重新启动时指定复制其中一个表:
[mysql@master data]$ mysqladmin -uroot -p shutdown
Enter password:
STOPPING server from pid file /home/mysql/sysdb/mysqld.pid
070724 17:31:11 mysqld ended
[mysql@master mysql_home]$ ./bin/mysqld_safe --replicate-do- table=test. repl_test &
[1] 9884
[mysql@master mysql_home]$ Starting mysqld daemon with databases from /home/mysql/sysdb/data
(3)下面更新主数据库上的两个表repl_test和repl_test_1:
mysql> insert into repl_test values(1,now());
Query OK, 1 row affected (0.00 sec)
mysql> insert into repl_test_1 values(1,now());
Query OK, 1 row affected (0.00 sec)
mysql> select * from repl_test;
+------+---------------------+
| id | createtime |
+------+---------------------+
| 5| 2007-07-24 16:29:49 |
| 1| 2007-07-24 16:47:43 |
2 rows in set (0.00 sec)
mysql> select * from repl_test_1;
+------+---------------------+
| id | create_time|
+------+---------------------+
| 1| 2007-07-24 16:47:47 |
+------+---------------------+
1 row in set (0.00 sec)
(4)再检查从数据库的复制情况:
mysql> select * from repl_test;
+------+---------------------+
| id | createtime |
+------+---------------------+
| 5 | 2007-07-24 16:29:49 |
| 1 | 2007-07-24 16:47:43 |
+------+---------------------+
2 rows in set (0.00 sec)
mysql> select * from repl_test_1;
Empty set (0.00 sec)
从测试的结果可以看到,只有repl_test表的记录被复制到从库上,而repl_test_1表的记录没有复制。