一,
cluster
模式配置
数据库同步复制功能的设置都在 mysql 的设置文件中体现。主要工作原理为 slave 端记录并且执行 master 端的操作日志 .mysql 的配置文件( Linux 下为 /etc/my.cnf )
1 、实施环境:
操作系统: 2 台 linux AS 4, 完全安装 .
A ip:192.168.1.240 (主数据库)
B ip:192.168.1.247 (从数据库)
2 、配置方法
(1)
主从模式
[Master->Slave]
:
A->B
在 A 中配置:
#service mysql start
#/usr/local/mysql/bin/mysql –u root -p123456
#/usr/local/mysql/bin/mysql –u root -p123456
增加一个用户做为同步的用户帐号:
Mysql>GRANT REPLICATION SLAVE ON *.* TO lixin@'192.168.1.247' IDENTIFIED BY '123456';
//lixin
是同步账号,
123456
是同步密码
增加一个数据库作为同步数据库:
Mysql>create database backup;
在 B 上配置:
#service mysql start
# /usr/local/mysql/bin/mysql –u root -p123456
增加一个用户最为同步的用户帐号:
Mysql> GRANT REPLICATION SLAVE ON *.* TO lixin@'192.168.1.240' IDENTIFIED BY '123456';
//lixin
是同步账号,
123456
是同步密码
增加一个数据库作为同步数据库:
增加一个数据库作为同步数据库:
Mysql>create database backup;
关闭
MYSQL
数据库
(2) 配置 Master 、 Slave 参数
1.
修改
A
中
mysql
的
my.cnf
文件。
#vi /etc/my.cnf
server-id=1
binlog-do-db=backup 此处数据库名为要数据同步的数据库
binlog-do-db=backup 此处数据库名为要数据同步的数据库
log_err=my-err.log
同步错误日志
max_binlog_size=104857600 配置完后重起数据库服务
max_binlog_size=104857600 配置完后重起数据库服务
用
show master status
命令看日志情况。
mysql> show master status;
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000008 | 106 | backup | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
2.
修改
B
中
mysql
的
my.cnf
文件。
#vi /etc/my.cnf
server-id=2
master-host=192.168.1.240 //maste 主机 IP
master-user=lixin //lixin 是同步账号
master-password=123456 //123456 是同步密码
master-port=3306 //master 主机的数据库端口
master-connect-retry=60 //设置心跳时间 ( 库同步间隔 )
replicate-do-db=backup // 同步的数据库名
3、 启动数据库和数据复制
server-id=2
master-host=192.168.1.240 //maste 主机 IP
master-user=lixin //lixin 是同步账号
master-password=123456 //123456 是同步密码
master-port=3306 //master 主机的数据库端口
master-connect-retry=60 //设置心跳时间 ( 库同步间隔 )
replicate-do-db=backup // 同步的数据库名
3、 启动数据库和数据复制
启动 SLAVE 从数据库:
#service mysql start
# /usr/local/mysql/bin/mysql –u root -p123456
Mysql> stop slave ; # 暂停 slave 从 master 同步数据 .
启动 MASTER 从数据库:
# service mysqld start
#
/usr/local/mysql/bin/mysql –u root -p123456
回到 SLAVE 从数据库终端:
Mysql>start slave ;
设置完成,启动成功:此处最好重启
mysql
服务
#service mysql restart
注
:
有时候会启动失败
,
可采用下面启动方法
#/usr/local/mysql/bin/mysqladmin –u root shutdown # 关闭数据库
#/usr/local/mysql/bin/mysqld_safe & # 启动数据库
#/usr/local/mysql/bin/mysqladmin –u root shutdown # 关闭数据库
#/usr/local/mysql/bin/mysqld_safe & # 启动数据库
查看是否启动同步复制线程:
Mysql>show slave status\G;
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.240
Master_User: lixin
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000008
Read_Master_Log_Pos: 106
Relay_Log_File: localhost-relay-bin.000002
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000008
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: backup
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 106
Relay_Log_Space: 410
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
注意:slave_IO进程及slave_SQL进程都必须正常运行,在状态输出重表现为: Slave_IO_Running: Yes 及Slave_SQL_Running: Yes 否则都是不正确的状态(如一个值Yes,另外一个是NO则不行).
如果不同步的解决办法
:
在
master
执行
mysql>stop slave;
Mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000008 | 106 | backup | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000008 | 106 | backup | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注意
master
中显示的记录点位置和正在记录的日志文件名
,
在
slave
中执行
:
mysql>
change master to master_host=’192.168.1.240‘, master_user=‘lixin’, master_password=‘123456’, master_log_file=‘
mysql-bin.000008
’, master_log_pos=106;
Mysql>exit
Mysql>exit
#service mysql restart #
重启
master
和
slave
的
mysql
未成功的话执行
:
#/usr/bin/mysqladmin –u root shutdown
#/usr/bin/mysqld_safe &
#/usr/bin/mysqld_safe &
4、进行测试同步是否成功
mysql>use backup;
mysql>create table lixin(name char(4));
然后在B服务器查看表有没有同步过来 , 如果过来就表示同步成功,否则就是失败了。
二.双机热备配置
配置双机方法其实就是在上述的
cluster
基础上略加改动,既在从机上做主机配置,在主机上做从机配置。具体方法如下:
A ip:192.168.1.240
B ip:192.168.1.247
在确定 cluster 模式配置成功后 , 关闭 master ( A )数据库:
B ip:192.168.1.247
在确定 cluster 模式配置成功后 , 关闭 master ( A )数据库:
#service mysql stop
#vi /etc/my.cnf
在配置文件中加入:
master-host=192.168.1.247 #
设置主机
IP
地址(从数据库ip)
master-user=lixin # 设置主机同步库用户名
master-password=123456 # 设置主机同步库密码
replicate-do-db=backup # 设置主要同步数据库
master-connect-retry=60 # 设置心跳时间 ( 库同步间隔 )
log_err=my-err.log # 同步错误日志
master-user=lixin # 设置主机同步库用户名
master-password=123456 # 设置主机同步库密码
replicate-do-db=backup # 设置主要同步数据库
master-connect-retry=60 # 设置心跳时间 ( 库同步间隔 )
log_err=my-err.log # 同步错误日志
完成后保存退出
.
启动
:
#service mysql start
# /usr/local/mysql/bin/mysql –u root -p123456
# /usr/local/mysql/bin/mysql –u root -p123456
配置
slave(B)
端
/etc/my.cnf,
加入以下内容
:
#vi /etc/my.cnf
binlog-do-db=backup
log-bin=my_log
重启
mysql
服务
:
#Service mysql restart
在
A
执行
:
Mysql>start slave;
Mysql>show slave status\G;
------------+
| Waiting for master to send event | 192.168.0.112 | backup | 3306 | 60 | my_log.000024 | 79 | l2-relay-bin.000010 | 4 | my_log.000024 | Yes | Yes | backup | | | | | | 0 | | 0 | 79 | 4 | None | | 0 | No | | | | | | 2741 |
在 B 执行 :;
Mysql>show slave status\G;
------------+
| Waiting for master to send event | 192.168.0.112 | backup | 3306 | 60 | my_log.000024 | 79 | l2-relay-bin.000010 | 4 | my_log.000024 | Yes | Yes | backup | | | | | | 0 | | 0 | 79 | 4 | None | | 0 | No | | | | | | 2741 |
在 B 执行 :;
mysql> show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| my_log.000024 | 79 | backup | |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| my_log.000024 | 79 | backup | |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)
对比以上信息
,
日志记录文件名
,
同步数词库名和日志记录点
,
如果无误代表现在
SvrB
已经可以做为
A
的
master
运行
.
但它本身也同时在做为
A
的
slave
来运行
.
在 A 执行 :
在 A 执行 :
Mysql>show master status;
+--------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------+----------+--------------+------------------+
| mylog.000009 | 4 | backup | |
+--------------+----------+--------------+------------------+
1 row in set (0.00 sec)
+--------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------+----------+--------------+------------------+
| mylog.000009 | 4 | backup | |
+--------------+----------+--------------+------------------+
1 row in set (0.00 sec)
在
B
执行
mysql> show slave status;
-------------+-----------------+-------------------+----------------+-----------------------+
| Waiting for master to send event | 192.168.0.111 | backup | 3306 | 60 | mylog.000009 | 4 | l1-relay-bin.000003 | 313 | mylog.000009 | Yes | Yes | backup | | | | | | 0 | | 0 | 4 | 313 | None | | 0 | No | | | | | | 3575 |
+----------------------------------+---------------+-------------+-------------+
1 row in set (0.00 sec)
mysql> show slave status;
-------------+-----------------+-------------------+----------------+-----------------------+
| Waiting for master to send event | 192.168.0.111 | backup | 3306 | 60 | mylog.000009 | 4 | l1-relay-bin.000003 | 313 | mylog.000009 | Yes | Yes | backup | | | | | | 0 | | 0 | 4 | 313 | None | | 0 | No | | | | | | 3575 |
+----------------------------------+---------------+-------------+-------------+
1 row in set (0.00 sec)
对比以上
A和
B
中的主机
ip,
同步数词库
,
同步日志文件名
,
同步日志记录点
.
确认无误后完成
.
注意:在对 mysql 进行配置后, master 端 var/lib/mysql/ 下生成的 master.info 内容可能会不正确。可能会导致的错误是在将 SvrA 配置成 slave 时执行 slave start 出现大概意思为 :“ 本机未配置成 slave 服务器 , 请更改 config 文件或者执行 change master to 命令 …” 的提示 , 解决办法为 :
#Vi /var/lib/mysql/master.info
14
mylog.000007 ### 同步后要记录的日志文件
79 ### 日志记录点
192.168.0.111 ### 主机 IP
Backup ### 同步数据库
123456 ### 同步数据库密码
3306 ### 同步端口
60 ### 心跳时间(同步间隔)
0
核对以上信息是否配置正确 , 为了更真实的测试同步准确性 , 建议在库中导入数据进行测试 . 以上 mysql cluster 模式和双机热备模式配置基本完成 .
注意:在对 mysql 进行配置后, master 端 var/lib/mysql/ 下生成的 master.info 内容可能会不正确。可能会导致的错误是在将 SvrA 配置成 slave 时执行 slave start 出现大概意思为 :“ 本机未配置成 slave 服务器 , 请更改 config 文件或者执行 change master to 命令 …” 的提示 , 解决办法为 :
#Vi /var/lib/mysql/master.info
14
mylog.000007 ### 同步后要记录的日志文件
79 ### 日志记录点
192.168.0.111 ### 主机 IP
Backup ### 同步数据库
123456 ### 同步数据库密码
3306 ### 同步端口
60 ### 心跳时间(同步间隔)
0
核对以上信息是否配置正确 , 为了更真实的测试同步准确性 , 建议在库中导入数据进行测试 . 以上 mysql cluster 模式和双机热备模式配置基本完成 .
本文转自wiliiwin 51CTO博客,原文链接:http://blog.51cto.com/wiliiwin/199216