复制指定的数据库或者数据表
replicate-do-table 和 replicate-ignore-table
1)启动主从数据库,在主库test中创建两个数据包,rep_t1 rep_t2
mysqld_multi --defaults-extra-file=/etc/my.cnf start 1-3
mysql -uroot -p -P3306 -S /tmp/mysql.sock
2)关闭数据库服务器,编辑从库配置参数replicate-do-table=test.rep_t1指定test数据库中的rep_t1表被>复制 replicate-ignore-table=test.rep_t2指定test库中的rep_t2表不会被复制
vi /etc/my.cnf
[mysqld2]
...
port = 3307
socket = /tmp/mysql2.sock
server-id = 2
replicate-do-table = test.rep_t1
replicate-ignore-table=test.rep_t2
3)启动从服务器
mysql> start slave;
4)主从服务器都更新成功后,开始更新主数据库test库中的rep_t1表和rep_t2表
mysql> insert into rep_t1 values(888);
mysql> insert into rep_t2 values(888);
5)登录从数据库,检查test库中rep_t1表和rep_t2表的数据更新情况
mysql -uroot -P 3307 -S /tmp/mysql2.sock
检测数据库的更新情况:
mysql> select * from rep_t1;
mysql> select * from rep_t2;
replicate-do-db和replicate-ignore-db的用法
1)启动主从数据库,查询主数据库中有哪些数据库
mysqld_multi --defaults-extra-file=/etc/my.cnf start 1-3
mysql -uroot -P 3306 -S /tmp/mysql.sock
登录数据库,查看 mysql> show databases;
2)mysqldump -uroot -P 3306 -S /tmp/mysql.sock --all-databases > all.sql
3)登录从数据库,导入all.sql中的数据,保持从服务器与主服务器数据一致
mysql -uroot -P 3307 -S /tmp/mysql2.sock
mysql> show databases;
mysql> source ./all.sql
mysql> show databases; 可以看到数据库已被导入
4)关闭从库,
mysqld_multi --dedaults-extra-file=/etc/my.cnf stop 1-3
配置/etc/my.cnf
[mysqld2]
..
port = 3307
socket = /tmp/mysql2.sock
server-id = 2
#replicate-do-table = test.rep_t1
#replicate-ignore-table=test.rep_t2
replicate-do-db=test
replicate-do-db=cc
replicate-ignore-db=tt
5)然后启动主从数据库,在主库增加cc_t1表,在tt库增加tt_t1表
mysqld_multi --dedaults-extra-file=/etc/my.cnf start 1-3
mysql> use cc;
mysql> create table cc_t1(data int);
mysql> use tt;
mysql> create table tt_t1(data int);
6)登录从库,检查数据库是否更新
mysql -uroot -P 3307 -S /tmp/mysql2.sock
mysql> use cc;
mysql> show tables;
mysql> use tt;
mysql> show tables;