为什么要使用Replication?
1. 通过热备份(hot standby)来避免灾难
2. 生成报表
3. 调试和审计
复制(replication)的基本步骤
- 配置一个服务器为master(主控端)
- 配置一个服务器为slave(从属端)
- 将slave连接到master
配置master
要使得一个服务器成为master,需确保它有活动的二进制日志(active binary log)和唯一的服务器ID(server ID)。
活动的二进制日志用于记录master上的所有的改变,以便它们可以被复制到slave上。服务器ID用于区分不同的服务器。
要创建二进制日志和服务器ID,需要停止服务器然后将log-bin、log-bin-index、server-id选项添加到my.cnf(Linux环境下)或my.ini(Windows下)配置文件中。例如:
- [mysqld]
- #other settings goes here
- #replication settings
- log-bin = master-bin
- log-bin-index = master-bin.index
- server-id = 1
严格来说,log-bin属性可以不设置。其默认值为hostname-bin。Hostname即我们的主机名。如果管理员修改了主机名,那么记录文件将会同时改变名称。
当修改完配置信息后,重启下MySQL服务,以便这些配置信息可以生效。
Slave初始化一个正常的到master的连接后,然后请求master发送所有的变更。此时master上需要一个账号来进行这些操作:
- master>CREATE USER repl_user;
- Query OK, 0 rows affected (0.00 sec)
- master> GRANT REPLICATION SLAVE ON *.*
- -> TO repl_user IDENTIFIED BY 'xyzzy';
- Query OK, 0 rows affected (0.00 sec)
REPLICATION SLAVE权限除了能从master上获取二进制日志文件外没有什么特别之处。为replication创建一个独立的用户是一个好主意,这样做当你不需要replication时,可以安全的移除该用户。
配置slave
在配置完master后,必须配置slave。跟master相同,你也需要为slave分配一个唯一的服务器ID。同时,需要考虑增加relay log和relay log索引文件名。例如:
- [mysqld]
- #other settings goes here
- #replication settings
- server-id = 2
- relay-log-index = slave-relay-bin.index
- relay-log = slave-relay-bin
修改完相应文件(Linux下为my.cnf、windows下为my.ini),重启slave服务器。
将slave连接到master
现在可以完成设置一个基本的replication的最后的步骤:指导slave连接到master上以便它可以知道从何处复制。要进行此步骤需要知道如下信息:
1. Master所在的主机名
2. Master的端口号
3. Master上带有replication slave权限的用户名
4. Master上该用户的密码
本机环境如下:
- slave>CHANGE MASTER TO
- ->MASTER_HOST = ‘127.0.0.1’,
- ->MASTER_PORT = 3306,
- ->MASTER_USER = ’repl_user’,
- ->MASTER_PASSWORD = ‘xyzzy’;
- slave>START SLAVE;
到目前为止,一个简单的replication就搭建起来了,你可以在master数据库上进行一些操作,如创建数据库、创建表、插入记录等,然后到slave所在的机器进行查看,相应的数据应该会同步到slave上。
转载于:https://blog.51cto.com/zhangtaolv/534563