准备工作,两台或者多台服务器mysql版本最好一致,或者是从服务器mysql版本大于主服务器mysql版本
1.配置MySQL数据库的配置文件my.cnf
位置:Linux服务器/etc/my.cnf或者是ect/mysql/my.cnf。windows服务器phpstudy/mysql/my.ini
在主服务器配置文件中的mysqld下写入:
server-id=1 #从数据库id =1(注:主从数据库的Id不能一致否者无法连接)
log-bin=mysql-bin
log_slave_updates=1
skip-grant-tables #跳过验证
在从服务器配置文件中的mysqld写入:(注意原配置文件,切勿重复写入)
server-id = 2 #从数据库id =2
log-bin=mysql-bin
binlog_format=mixed #日志格式
skip-grant-tables #跳过验证
保存完毕之后重起mysql(Linux命令)
service mysql restart
2.配置主库;
创建从库用户并授予从库复制主库的权限:
grant replication slave on *.* to '从服务器数据库用户名'@'从服务器的IP' identified by '从服务器的数据库密码';
重新加载权限
flush privileges;
登录主服务器mysql查看当前二进制文件的状态
show master status;
请记录绿色框中的数值
3.配置从库
change master to master_host='主服务器IP', master_port=3306, master_user='root',master_password='主库密码', master_log_file='mysql-bin.000005',master_log_pos=107;
启动从动
start slave;
4.查看从服务器mysql当前的slave状态
show slave status \G
这里重点关注到IO线程和SQL线程都没有启动:
Slave_IO_Running: yes
Slave_SQL_Running: yes
为yes时表示配置成功并且已经启动(如果二者同时为no时重启mysql)
5.master开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在mysql配置文件的[mysqld]下可添加修改如下选项:
# 不同步哪些数据库
binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema
# 只同步哪些数据库,除此之外,其他不同步
binlog-do-db = database(数据库名)
6.总结遇到的问题
Slave_IO_Running: no
Slave_SQL_Running: yes
1》查看3306端口是否开放
show variables like 'port';
2》检查配置文件中的server-id是否冲突注意id不能有冲突
show variables like 'server_id';
3》查看主服务器MySQL数据库的状态
show master status;
查看从服务器的状态
show slave status \G
这两条数据必须一致否则重新配置从服务器的MySQL
先停止从动,修改配置,在启动从动
stop slave;
change master to master_log_file='master-bin.必须一致',master_log_pos=必须一致;
start slave;
如果遇到
Slave_IO_Running: yes
Slave_SQL_Running: no
stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;
(有时候需要多次执行上面这三条命令)
祝福每一位童鞋一次配置成功