1. 配置主服务器
1.1 编辑my.cnf文件,配置主服务器ID。
[mysqld]
log-bin=mysql-bin
server-id=1
relay-log = relay-bin
relay-log-index = relay-bin.index
1.2 重启主服务器。
2. 配置从服务器
2.1 编辑my.cnf文件,配置从服务器ID。
[mysqld]
server-id=2
2.2 重启从服务器。
3. 创建同步帐号
3.1 创建复制用户。用户名和密码将会明文存储在同步信息文件master.info中。
mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
3.2 授权复制用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com';
4. 获取binlog同步点信息
4.1 暂停主服务器的写入。在对主服务器加锁后,当前会话不能退出,否则会自动释放锁。
mysql> FLUSH TABLES WITH READ LOCK;
4.2 获取binlog文件名和偏移量。
mysql >SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 73 | test | manual,mysql |
+------------------+----------+--------------+------------------+
5. 创建主服务器快照
5.1 快照需要排除的文件列表。
- mysql库相关的文件
- master.info信息文件
- 主服务器产生的binlog文件
- 其他中转日志文件
5.2 确保获取了同步点信息。
5.3 关闭主服务器。
shell> mysqladmin shutdown
5.4 同步主服务器数据
shell> rsync -av mysql/ work@lab08:/home/work/local/mysql/ --exclude=var/mysql-bin.* --exclude=var/slow.log
5.5 启动主服务器。
6. 在从服务器设置同步信息
6.1 命令行设置
mysql>CHANGE MASTER TO
->MASTER_HOST='
master_host_name
',
-> MASTER_PORT=1127,
->MASTER_USER='
replication_user_name
',
->MASTER_PASSWORD='
replication_password
',
->MASTER_LOG_FILE='
recorded_log_file_name
',
->MASTER_LOG_POS=
recorded_log_position
;
6.2 启动slave同步
mysql> SLAVE START\G;
6.3 查看slave同步状态
mysql> SHOW SLAVE STAUTS\G;
如果观察到以下都为Yes,表明开始正常同步了。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
7 设置从库只读
有两种方式设置从库只读,修改配置或设置全局变量。
7.1 修改my.cnf文件
#从库是否只读,0表示可读写,1表示只读
read-only=1
7.2 动态设置参数
set global read_only=true;
参考手册
http://dev.mysql.com/doc/refman/5.0/en/replication-howto.html