标签:
翻译人员: 铁锚
翻译日期: 2013年12月25日
原文链接:
主从复制包含两个步骤: 在 master 主服务器(组)上的设置,以及在 slave 从属服务器(组)上的设置.
配置主服务器 master- 如果没有启用,则需要 .
- 给 master 设置唯一的 server_id ,所有的 slave 从属服务器也要设置 server_id; server_id值可以是整数型的数字(1 ~ 2^31-1), 在同一个复制组(replicating group)中的每台服务器的server_id都必须是唯一的.
- slave 从属服务器需要有连接并从master复制的权限. 通常是为每一台slave 创建一个单独的用户(user),并且只授予复制的权限(REPLICATION SLAVE 权限).
- GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'slave_host' IDENTIFIED BY 'bigs3cret';
- FLUSH PRIVILEGES;
- 给 slave 指定唯一的 server_id. 所有服务器,不管是主服务器,还是从服务器,都要设置 server_id. server_id值可以是整数型的数字(1 ~ 2^31-1), 在同一个复制组(replicating group)中的每台(/个)服务器的server_id都必须是唯一的.
- 在 master上执行命令 "FLUSH TABLES WITH READ LOCK",以强制写入日志,并锁定所有的表 —— 在此期间不能关闭会话,一关闭会话就会释放锁.
- 通过运行 "SHOW MASTER STATUS" 来获取二进制日志的当前位置信息.
- 记下 File 以及 Position 信息. 如果刚刚才开启了二进制日志功能,则为空.
- 然后,开始从master 拷贝 data 到 slave,请参考:
- 将数据从master拷贝到slave以后,可以执行"UNLOCK TABLES;"释放master上的锁。
- 示例如下:
- --
- SHOW MASTER STATUS;
- +--------------------+----------+--------------+------------------+
- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
- +--------------------+----------+--------------+------------------+
- | mariadb-bin.000096 | 568 | | |
- +--------------------+----------+--------------+------------------+
- --
启动从属服务器 Slave 数据导入以后,就可以启动复制功能了。 通过执行 " CHANGE MASTER TO" 来开始. 确保 " MASTER_LOG_FILE",以及 " MASTER_LOG_POS" 与master早时候记下的信息一致. 示例如下:
- CHANGE MASTER TO
- MASTER_HOST='master.domain.com',
- MASTER_USER='replication_user',
- MASTER_PASSWORD='bigs3cret',
- MASTER_PORT=3306,
- MASTER_LOG_FILE='mariadb-bin.000096',
- MASTER_LOG_POS=568,
- MASTER_CONNECT_RETRY=10;
- START SLAVE;
- SHOW SLAVE STATUS;
如果需要暂停 slave 复制,则可使用SQL :
- stop slave;
- [root@AY13 mysql]# service mysql stop
- Shutting down MySQL. SUCCESS!
- [root@AY13 mysql]# service mysql start
- Starting MySQL.. SUCCESS!