分类: LINUX
2008-11-04 13:56:28
一,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
增加一个用户做为同步的用户帐号:
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 此处数据库名为要数据同步的数据库
log_err=my-err.log 同步错误日志
max_binlog_size=104857600 配置完后重起数据库服务
用show master status 命令看日志情况。
mysql> show master status;
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、启动数据库和数据复制
启动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 & #启动数据库
查看是否启动同步复制线程:
Mysql>show slave status\G;
如果不同步的解决办法:
在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)
注意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
#service mysql restart #重启master和slave的mysql
未成功的话执行:
#/usr/bin/mysqladmin –u root shutdown
#/usr/bin/mysqld_safe &
4、进行测试同步是否成功
二.双机热备配置
配置双机方法其实就是在上述的cluster基础上略加改动,既在从机上做主机配置,在主机上做从机配置。具体方法如下:
A ip:192.168.1.240
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 #同步错误日志
完成后保存退出.启动:
#service mysql start
#/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 master status;
+---------------+----------+--------------+------------------+
| 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执行:
Mysql>show master status;
+--------------+----------+--------------+------------------+
| 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)
对比以上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模式和双机热备模式配置基本完成.