mysql的replication是基于二进制日志的,按照手册配置就可以了,配置很简单
主服务器
配置文件mysql.ini
[mysqld]
#服务器ID号,整数值,保证唯一标识一台服务器就可以
server-id = 410
#打开二进制日志
log-bin=e:\myoa\logs\mysqlbin.log
#忽略mysql数据库复制
binlog-ignore-db=mysql
#忽略information_schema数据库复制
binlog-ignore-db=information_schema
#创建用于复制的账号
GRANT REPLICATION SLAVE ON *.* TO ‘repl’ IDENTIFIED BY ‘slavepass’;
#选择数据库
mysql> use dbname;
#设置表为只读
mysql> FLUSH TABLES WITH READ LOCK;
#备份数据库文件zip
#显示并记录日志文件名和状态,需要在从服务器设置
mysql> SHOW MASTER STATUS;
+—————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+—————+———-+————–+——————+
| mysql-bin.003 | 73 | test | manual,mysql |
+—————+———-+————–+——————+
#数据表解锁
mysql> unlock tables;
从服务器
把从主服务器备份的文件在从服务器恢复
#设置主服务器信息
mysql> CHANGE MASTER TO
-> MASTER_HOST=’192.168.113.128′,
-> MASTER_PORT=3306,
-> MASTER_USER=’repl’,
-> MASTER_PASSWORD=’slavepass’,
-> MASTER_LOG_FILE=’recorded_log_file_name’,
-> MASTER_LOG_POS=recorded_log_position;
#启动
mysql> START SLAVE;
#显示状态 查看状态
mysql> Show slave status\G;
配置文件mysql.ini
mysql.ini
server-id =411
#排除不需要同步的表
replicate_ignore_table=TD_OA.SYS_LOG
遇到的问题
使用自增字段如果在从服务器写入数据会出现冲突,比如登录日志的表,需要在从服务器排除同步该表
show master status empty set 服务器端没有配置ini文件
slave_io_running no 检查端口 log文件名 和便宜量 等一会再观察
最好主从服务器版本一致