当前位置:嗨网首页>书籍在线阅读

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表的记录没有复制。