*准备工作:
·一般管 master 称为主服务;slave 称为从服务。
·主、从端的mysql版本最好一致,不然在后期同步过程中会遇到问题。
·关掉机器的防火墙。
·主机ip:192.168.172.38
·从机ip:192.168.172.37
*主机配置:
·
修改
mysql的配置文件(my.ini/my.cnf
):
#Master configserver-id = 1 #标识主机唯一id
log-bin = mysql-bin # 开启日志存储,也可以自动以日志存储位置
binlog-do-db=cpsystem #需要同步的数据库,如果需要配置多个数据库,复制配置就可以了
· 在master上为slave添加一个同步账号:
mysql> grant replication slave on *.* to '账户'@'192.168.172.37' identified by '密码';
其中: IP地址:为从机服务的地址
· 配置完毕,重启服务。
·
查看主机配置状况:
show master status\G;
成功显示内容:
File: log.000027
Position: 3151Binlog_Do_DB: cpsystemBinlog_Ignore_DB:
*从机配置:
·
修改
mysql的配置文件(my.ini/my.cnf
):
#slave config
server-id=2 #标识主机唯一id,不能与主机服务相同
master-host=192.168.172.38 #主机服务ip
master-user= 账户 #之前为从机分配的账户
master-password= 密码 #之前为从机分配的密码
master-port=3306 #主机端口,默认3306,可以不配置replicate-do-db=cpsystem #需要同步的数据库名称
·配置完毕,重启服务。
·启动slave:start slave;
·
查看从机配置状况:
show slave status\G;
成功显示内容:
Slave_IO_Running、Slave_SQL_Running状态为Yes则表明设置成功。
*相关提示:
·
1
,主、从服务端最初配置需要提前建立好相同的数据库结构。数据结构不统一,会导致同步失败。
1.1 备份主数据库文件:
注意在导出数据之前先对主数据库进行READ LOCK,以保证数据的一致性。
mysql>
FLUSH
TABLES
WITH
READ
LOCK
;
1.2 导出主表数据:
mysqldump -h127.0.0.1 -p3306 -uroot -p cpsystem > d:\copy_cpsystem.sql
1.3 数据备份完毕恢复写操作:
mysql > unlock tables;
1.4
将刚才主数据备份的copy_cpsystem.sql
复制到从数据库,进行导入。
·2,问题解决:
Slave_IO_Running: No或者Slave_SQL_Running: No
2.1,停掉slave服务
mysql> slave stop;
2.2,解决办法
----解决办法1----a. 在master上查看。mysql> show master status\G;*************************** 1. row ***************************File: log.000027Position: 3151Binlog_Do_DB: cpsystemBinlog_Ignore_DB:
b.到slave上手动同步。mysql>change master to>master_host='192.168.172.38',>master_user='masterdb',>master_password='masterdb',>master_log_file='log.000027',>master_log_pos=3151;Query OK, 0 rows affected (0.00 sec)
----解决方法2----(未试验过,只试验过解决方法1)mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;mysql> slave start;
2.3,
启动slave服务
mysql> slave start;
2.4,
再次查看Slave_IO_Running、Slave_SQL_Running状态,为Yes则表明设置成功。
·3,显示数据库进程:
show processlist\G;