这里强调的数据库的版本,是因为mysql在5.6之前和之后的安装方式是不一样的。
本人在进行配置的时候,也遇到了这个坑,这里提前说明,希望大家不要采坑。
主机A:192.168.0.179 (Master)
主机B:192.168.0.143 (Slave)
Master的配置
在Linux环境下MySQL的配置文件的位置是在 /etc/my.cnf
,在该文件下指定Master的配置如下:
log-bin=mysql-bin
server-id=1
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
binlog-do-db=testdb
这里的server-id用于标识唯一的数据库,这里设置为1。
binlog-ignore-db:表示同步的时候ignore的数据库
binlog-do-db:指定需要同步的数据库
1、然后重启mysql:service mysqld restart
2、进入mysql:[[email protected]~]# mysql -u root -p
回车,输入mysql密码进入。
3、 赋予从库权限帐号,允许用户在主库上读取日志,赋予192.168.0.143也就是Slave机器有File权限,赋予Slave机器REPLICATION SLAVE的权限。
在Master数据库命令行中输入:
> GRANT REPLICATION SLAVE ON *.* TO ‘syncuser‘@‘192.168.0.143‘ IDENTIFIED BY ‘123456‘;
> FLUSH PRIVILEGES
4、重启mysql,登录mysql,显示主库信息
mysql> show master status;
这里的 File 、Position 是在配置Salve的时候要使用到的,Binlog_Do_DB表示要同步的数据库,Binlog_Ignore_DB 表示Ignore的数据库,这些都是在配置的时候进行指定的。
Slave的配置
1、从库的配置,首先也是修改配置文件:/etc/my.cnf 如下:
server_id = 2
log_bin = mysql-bin
replicate-do-db = testdb
log-slave-updates
slave-skip-errors = all
slave-net-timeout = 60
在MySQL5.6之后的版本中没有指定,
master-host=192.168.0.179 #Master的主机IP
master-user=syncuser
master-password=123456 #Master的MySQL密码
mysql5.6之后这些配置在mysql命令行里面配置.下面就重启mysql, 进入mysql:
mysql> stop slave;
mysql> change master to master_host=‘192.168.0.179‘,master_user=‘syncuser‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000001‘, master_log_pos=1686;
mysql> start slave;
然后可以通过mysql> show slave status;
查看配置的信息:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
这两个表示同步正常
配置过程,到此为止,以备后用,也方便大家查阅。