本文记录如何给一台应用中的MySQL服务器部署Replication。
安装环境
现有MySQL
现有MySQL服务器的特点:
- 没有专门为Replication环境配置
- MySQL为编译安装
- MySQL处于运行状态,不可长时间停机
目的
将现有服务器作为Master服务器,配置并运行一台新的MySQL服务器作为Slave服务器
准备
- 服务器硬件
- 现有主服务器的安装代码包(mysql-5.x.xxx.tar.gz)
主服务器的配置和数据准备
Master服务器的必须配置
要使用Replication必须将Master的binlog打开,并设置服务器ID。最简单的配置如下:
log-bin = mysql-bin
server-id = 1
当然关于MySQL Bin Log的配置还有很多设置,可以参考相关手册
数据备份
现在需要将Master的数据备份出来要注意的是要记住
备份点的binlog日志和postion 。Master数据备份的方式可以是停机冷备份,如果安装了LVM可以使用LVM的Snapshot。下面使用mysqldump 导出数据。在导出数据之前我们应该Flush表,并锁住表,比允许数据写入。
mysql> FLUASH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000157 | 18757860 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
使用mysqldump导出数据
mysql:~# mysqldump -uroot -p --all-databases > dump.sql
解锁
mysql> UNLOCK TABLES;
安装参数的提取
需要在Slave主机编译安装MySQL要了解Master安装时的编译参数,可以通过如下方式获得:
mysql:~# cat /usr/local/mysql/bin/mysqlbug | grep CONFIGURE
repl用户创建
在Master服务器中创建repl用户,用于在Slave 数据库中访问Master数据
mysql> GREANT REPLICATION SLAVE ON *.* to 'repl'@'IP.SLAVE.SERVER' identified by 'repl_passwd';
Slave服务器的安装
MySQL的安装
- 按前面提取的configure参数对源代码进行编译(
./configure; make; make install;
)
- 安装初始化数据库:
#mysql_install_db --datadir=/data --user=mysql
- 参照@{mysql-src}/support-files/
目录中my.cnf文件在
/etc/下创建@my.cnf
- 参照@{mysql-src}/support-files/mysql.server@文件在@/etc/init.d/
下配置@mysqldb
- 可尝试启动mysql。
/etc/init.d/mysqldb start
数据的导入
mysql# mysql -uroot -p < dump.sql
如果导入出现超出最大数据包错误可以尝试修改my.cnf中的max_allow_packet
在my.cnf中配置slave
在my.cnf中配置:
server-id = 2
master-host = master_ip
master-user = repl
master-password = repl_passwd
在Slave服务器上启动Slave
mysql> STOP SLAVE;
mysql> CHANGE MASTER TO
MASTER_HOST='masterip',
MASTER_USER='repl',
MASTER_PASSWORD='repl_passwd',
MASTER_LOG_FILE='mysql-bin.000157',
MASTER_LOG_POS=18757860 ;
mysql> START SLAVE;