Chinaunix首页 | 论坛 | 博客
  • 博客访问: 936880
  • 博文数量: 119
  • 博客积分: 6248
  • 博客等级: 准将
  • 技术积分: 1419
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-08 14:14
文章分类

全部博文(119)

文章存档

2014年(1)

2012年(1)

2011年(2)

2010年(22)

2009年(81)

2008年(12)

分类: LINUX

2008-11-04 13:56:28

一,cluster模式配置


数据库同步复制功能的设置都在mysql的设置文件中体现。主要工作原理为slave端记录并且执行master端的操作日志.mysql的配置文件(Linux下为/etc/my.cnf

1
、实施环境:
  操作系统:2linux 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) 配置MasterSlave参数



1.修改Amysqlmy.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;


+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000008 |      106 | backup       |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

2.修改B mysqlmy.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 ;      #暂停slavemaster同步数据.


启动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;


*************************** 1. row ***************************
               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)


注意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      #重启masterslavemysql


未成功的话执行:


#/usr/bin/mysqladmin –u root shutdown
#/usr/bin/mysqld_safe &


4、进行测试同步是否成功


在A服务器创建表

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模式配置成功后,关闭masterA)数据库:

#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已经可以做为Amaster运行.但它本身也同时在做为Aslave来运行.
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进行配置后,mastervar/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模式和双机热备模式配置基本完成.

阅读(3099) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~