Centos5.7下Mysql双机热备配置

jackxiang 2013-4-7 15:18 | |
背景:对于Mysql下的单向同步Master/slave目前好多都在用,而对于双机热备确实是一个在为了解决多区域下的访问提速上有所应用。

环境
Master操作系统:Centos 5.7
Ip:222.123.44.65
Slave操作系统:Centos 5.7
Ip:222.123.44.66
根据安装方法的不同,数据库相关路径也不太一致,我用YUM安装,因些,数据库存放路径/var/lib/mysql,数据库配置文件路径/usr/share/mysql,数据库相关命令/usr/bin.
查看主库服务器/usr/share/mysql目录下的cnf文件
/usr/share/mysql/*.cnf
其中.cnf文档如下:
My-small.cnf     内存少于或等于64M,只提供很少数据库服务
My-medium.cnf   内存在32M-64M之间而且和其他服务一起使用,如web
My-large.cnf      内存在512M主要提供数据库服务
My-huge.cnf      内存在1G-2G,主要提供数据库服务
My-innodb-heavy-4G.cnf   内存有4G,主要提供较大负载数据库服务(一般服务器使用这个)
复制文件到/etc下并更名为my.cnf
Cp /usr/share/mysql/my-innodb-heavy-4G.cnf /etc/my.cnf
***Master端***
进入mysql,创建一个数据库repldb
Mysql>create database repldb;
创建一个用来同步的用户,指定只能在222.123.43.66登录
Mysql>grant replication slave on *.* to 'repldb'@'222.123.43.66' identified by '123456';
打开my.cnf,并添加如下字段
Vi /etc/my.cnf
Server-id = 1
Log-bin = log
Binlog-do-db = repldb    //需要同步的数据库,如果没有本行,即表示同步所有数据库
Master-host = 222.123.44.66
Master-user = repldb
Master-password = 123456
Master-port = 3306
Master-connect-retry = 10
Replicate-do-db = repldb  //需要接收的数据库,如有多个数据库,每个数据库一行
重启master机的mysql服务
Service mysqld restart
进入mysql,执行
Mysql>slave start;

***Slave端***
进入mysql,创建一个数据库repldb
Mysql>create database repldb;
创建一个用来同步的用户,指定只能在222.123.43.65登录
Mysql>grant replication slave on *.* to 'repldb'@'222.123.43.65' identified by '123456';
打开my.cnf,并添加如下字段
Vi /etc/my.cnf
Server-id = 2
Log-bin = log
Binlog-do-db = repldb
Master-host = 222.123.43.65
Master-user = repldb
Master-password = 123456
Master-port = 3306
Master-connect-retry = 10
Replcate-do-db = repldb  //需要接收的数据库,如有多个数据库,每个数据库一行
然后重启slave机的mysql
Service mysqld restart
在slaves机中进入mysql
Mysql>start slave;

****关键步骤****
把两台服务器上需要同步的数据库进行拷贝,保证这两台数据库初始状态一致
进行双向同步
双向同步就是把单向同步反过来在做一遍,但一定要注意操作顺序,这是成功的关键。
在master服务器上进入mysql
mysql> show master status;
+------------+----------+--------------+------------------+
| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------+----------+--------------+------------------+
| log.000011 |  4514237 | repldb      | mysql            |
+------------+----------+--------------+------------------+
1 row in set (0.00 sec)
记录下log.000011 和4514237

在slave服务器上执行
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
输入如下命令:
mysql> change master to
    -> master_host = '222.123.43.65',
    -> master_user = 'repldb',
    -> master_password = '123456',
    -> master_log_file = 'log.000011',
    -> master_log_pos = 4514237;
Query OK, 0 rows affected (0.00 sec)
mysql> start slave;                 //开始同步
Query OK, 0 rows affected (0.00 sec)

在slave服务器上进入mysql
mysql> show master status;
+------------+----------+--------------+------------------+
| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------+----------+--------------+------------------+
| log.000001 |  4502348 | repldb      |                  |
+------------+----------+--------------+------------------+
1 row in set (0.00 sec)
记录下log.000001 和4502348

在master服务器上执行
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
输入如下命令:
mysql> change master to
    -> master_host = '222.123.43.66',
    -> master_user = 'repldb',
    -> master_password = '123456',
    -> master_log_file = 'log.000001',
    -> master_log_pos = 4502348;
Query OK, 0 rows affected (0.00 sec)
mysql> start slave;                 //开始同步
Query OK, 0 rows affected (0.00 sec)

下面进行测试
mysql> slave processlist \G;  

来自:http://mycnarms.blog.51cto.com/614646/735117

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/6216/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]