主库配置
1.主库编辑my.cnf(一般在/etc/my.cnf):
[mysqld]
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db = mc #记录日志的库,多个库用逗号分隔(my.cnf 中有注释的 binlog_do_db = xxx ,没有试验,直接按照网上找的例子写的。有兴趣的朋友可以试一下bin_do_db 是否可行)
binlog-ignore-db = xxx #不记录日志的库,多个库用逗号分隔(测试时可以不写,真是环境中最好配上)
保存后重启mysql服务
2.配置用于复制的用户
mysql> grant replication slave on *.* to slaveuser@192.168.1.101 identified by '123456' ;
mysql> flush privileges;
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 107 | mc | |
+------------------+----------+--------------+------------------+
记录下二进制日志文件名和位置
从库配置
1.从库编辑my.cnf,把server-id改成不和主机相同的数字。添加 replicate-do-db = mc,
[mysqld]
server-id=2 #唯一
#设置要进行或不要进行主从复制的数据库名,同时也要在Master 上设定。
replicate-do-db = mc #要复制的数据库名,多个库逗号分隔
replicate-ignore-db = 数据库名3,数据库4 #不复制的数据库名
保存后重启mysql服务
2.登录mysql,配置mastermysql> change master to master_host='192.168.1.100',master_user='slaveuser',master_password='123456', master_log_file='mysql-bin.000001',master_log_pos=107;
mysql> start slave;
mysql> show slave status\G;
如果出现:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
说明没有问题了