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

 

posted on 2018-10-10 10:23  秦水坡  阅读(152)  评论(0编辑  收藏  举报