mysql 开启主从复制
1、配置Master主服务器
(1)在Master MySQL上创建一个用户‘synchro’,并允许其他Slave服务器可以通过远程访问Master,通过该用户读取二进制日志,实现数据同步。
1 mysql>create user synchro; //创建新用户
2 //synchro用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,密码为123456。说明一下192.168.1.111,这个配置是指明synchro用户所在服务器。
3 mysql> GRANT REPLICATION SLAVE ON *.* TO 'synchro'@'192.168.1.111' IDENTIFIED BY '123456';
(2)找到MySQL安装文件夹修改my.Ini文件 (linux 下 my.cnf)。mysql中有好几种日志方式,这不是今天的重点。我们只要启动二进制日志log-bin就ok。
在[mysqld]下面增加下面几行代码
1 server-id=1 //给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号
2 log-bin=master-bin
3 log-bin-index=master-bin.index
(3)查看日志
mysql> SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 | 1285 | | |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
重启MySQL服务
2、配置Slave从服务器(windows)
(1)找到MySQL安装文件夹修改my.ini文件(linux 下 my.cnf),在[mysqld]下面增加下面几行代码
1 [mysqld]
2 server-id=2
3 relay-log-index=slave-relay-bin.index
4 relay-log=slave-relay-bin
重启MySQL服务
(2)连接Master
change master to master_host='192.168.1.111', //Master 服务器Ip
master_port=3306,
master_user='synchro',
master_password='123456',
master_log_file='master-bin.000001',//Master服务器产生的日志
master_log_pos=1258;
(3)启动Slave
start slave;
注意事项:
master_log_pos,master_log_file 这个表示需要同步的起始命令的坐标(如上为第一个文件的 第1258条命令)
这两个信息可以在主库中通过 SHOW MASTER STATUS;查询
当同步卡住报错时,如报错说更新失败,插入失败,找不到表等等时,可以在从库修复相应的数据,然后 stop slave;start slave; 解决
如果找不到原有的数据时,可以修复到当前状态,通过跳过该指令
set global sql_slave_skip_counter=1; stop slave; start slave;
锁表
flush tables with read lock;
解锁表
unlock tables