Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3340
  • 博文数量: 1
  • 博客积分: 121
  • 博客等级: 入伍新兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-02 10:58
文章分类

全部博文(1)

文章存档

2010年(1)

我的朋友
最近访客

分类: Mysql/postgreSQL

2010-11-02 11:02:05

 

Mysql-master-master详细配置文档

Master1   192.168.1.77

Master2   192.168.1.78

Slave1     192.168.1.80

Slave2     192.168.1.81

以上四台主机的Mysql版本为5.1.50(x86_64),操作系统为centos5.4 x86_64,数据库安装在/data/mysql目录下。

1,  分别在该四台主机上安装mysql5.1.50(x86_64),安装步骤忽略。

2,  安装完mysql后,配置/etc/my.cnf文件,以下列出相关配置文档参数

77配置文件内容:(只列出mmm所必须的参数,其它忽略,注意看红色字体备注信息)

log-bin=/data/logs/mysql-bin         打开二进志日志记录以及位置

max_binlog_size = 1024M           最大记录文件的大小为1G

expire-logs-days = 15               记录日志轮询为15

binlog_cache_size = 4M             缓存

max_binlog_cache_size = 512M      最大缓存

relay_log           = /data/logs/mysql-relay-bin  复制从库的位置

log_slave_updates   = 1                       打开复制更新

read_only           = 1                设置为只读只有super权限用户可写

binlog-do-db = bbs_gbk                   记录日志的数据库

replicate-do-db = bbs_gbk                 只复制的数据库(该参数可注销)

server-id       = 77                    ID不能与其它机器相同

78配置文件内容和77基本相同,但最后一项需要改成server-id  =  78

80配置文件内容:

replicate-do-db = bbs_gbk

server-id       = 80

只需要加入以上该二项即可。

81配置文件内容:

replicate-do-db = bbs_gbk

server-id       = 81

切记:server-id值必须是唯一的,不能与其它机器相同

以上四台机器的mysql以及配置文件就已经都搞定了,然后分别重启四台机器的mysql服务service mysqld restart

3,  分别在四台mysql机器里面建立三个帐号:

GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'192.168.1.%' IDENTIFIED BY 'mmm_monitor';

GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO 'mmm_agent'@'192.168.1.%'   IDENTIFIED BY 'mmm_agent';

GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.%' IDENTIFIED BY 'replication';

以上内容直接复制粘贴即可。

这三个帐号的意义分别为:

mmm_monitor该帐号是为监控以及测试这四台mysql主机使用的

mmm_agent该帐号是更改mysql 里面的只读模式read_only=1=0

replication该帐号是为了主从库之间复制所用

4,  然后执行主从复制操作:

先在主库77上执行全局读锁操作flush tables with read lock;(不要退出当前会话)

然后在77主库上执行show master status;  主从复制的库为bbs_gbk

记录二进制文件以及坐标内容,以后会用到,然后把bbs_gbk该库同步到788081这几台数据库上面,同步完成后在主库77上执行取消读锁操作 unlock tables;

然后分别在788081这三台从库上面执行一下操作:

CHANGE MASTER TO 

MASTER_HOST='192.168.1.77',

MASTER_USER='replication',

MASTER_PASSWORD='replication,

MASTER_LOG_FILE='mysql-bin.000015',   该值为77二进制文件

MASTER_LOG_POS=380;               该值为77二进制文件坐标

 Slave start;

至此,主从复制操作完成,然后分别在788081上执行以下命令来查看主从复制情况:

显示结果为一切正常。

现在77788081的主库,但是下面要做另外一个操作,该操作就是7877的主库,也就是说,77即是78的主库,也是78的从库,7778互为主从。

下面在78从库上执行以下操作:

然后记录上面的值:

然后在77上面执行以下操作:

 

CHANGE MASTER TO 

MASTER_HOST='192.168.1.78',

MASTER_USER='replication',

MASTER_PASSWORD='replication,

MASTER_LOG_FILE=' mysql-bin.000010',   该值为78二进制文件

MASTER_LOG_POS= 854;               该值为78二进制文件坐标

   Slave start;

   然后再执行以下操作:

  主从复制一切正常,现在7778是互为主从关系,然后分别在77bbs_gbk库里面建一个表,然后看其它三个库788081有没有该表,然后再分别在78库里面建一个表,再看778081,里面有没有该表,如果都有证明7778互为主从成功。

 

5,  然后开始安装mysql-master-master(mmm)系统:

该系统分别安装在四台mysql的机器上面即:77788081

安装步骤非常简单,通过yum来安装即可,但需要更新yum源,更新过程忽略:

分别在四台机器上执行:yum install mysql-mmm*操作,瞬间即完。

安装完成后会在/etc/mysql-mmm/下生成几个配置文件mmm的所有配置文件都在这里面

然后分配在77788081这四台主机里面编辑配置文件:

77的配置文件内容先编辑mmm_common.conf该文件:

active_master_role      writer

    cluster_interface       eth1        因为我们使用内网IP,所以选择eth1

    pid_path                /var/run/mysql-mmm/mmm_agentd.pid

    bin_path                /usr/libexec/mysql-mmm/

    replication_user        replication  即复制的用户名

    replication_password    replication  即复制的密码

    agent_user              mmm_agent       更改只读用户名

    agent_password          mmm_agent  更改只读密码

                      主库的主机名为db1

    ip      192.168.1.77         为主库的IP地址

    mode    master             工作模式为主

    peer    db2               

                     互备主库的主机名为db2

    ip      192.168.1.78        互备主库的IP地址

    mode    master            工作模式为主

    peer    db1

                    从库的主机名为db3

    ip      192.168.1.80       从库的IP地址

    mode    slave            工作模式为从

                   从库的主机名为db4

    ip      192.168.1.81      从库的IP地址

    mode    slave           工作模式为从

                 写入角色

    hosts   db1, db2         主库和备从主库

    ips     192.168.1.110    虚拟VIP地址

    mode    exclusive       模式为唯一的即7778两个互为主从的库只能用到一个IP地址:192.168.1.110

                角色为只读

    hosts   db3, db4        从库

    ips     192.168.1.111, 192.168.1.112       虚拟的只读VIP地址

    mode    balanced      工作模式为均衡的                           

保存退出,该配置文件与788081的完全相同。

然后再分别在77788081这四台机器上编辑mmm_agent.conf文件:

77文件内容如下:

include mmm_common.conf

this db1         这个地方是77机器上的db1

78文件内容如下:

include mmm_common.conf

this db2         这个地方是78机器上的db2

80文件内容如下:

include mmm_common.conf

this db3         这个地方是80机器上的db3

81文件内容如下:

include mmm_common.conf

this db4         这个地方是81机器上的db4

然后再分别编辑77788081上的mmm_mon.conf文件,该文件在77788081这四台主机上内容一样不需要单独更改:

include mmm_common.conf

    ip                  127.0.0.1

    pid_path            /var/run/mysql-mmm/mmm_mond.pid

    bin_path            /usr/libexec/mysql-mmm

    status_path         /var/lib/mysql-mmm/mmm_mond.status

    ping_ips            192.168.1.77, 192.168.1.78, 192.168.1.80, 192.168.1.81 所监控的内网IP

    auto_set_online     60   自动设置在线时间

    # The kill_host_bin does not exist by default, though the monitor will

    # throw a warning about it missing.  See the section 5.10 "Kill Host

    # Functionality" in the PDF documentation.

    #

    # kill_host_bin     /usr/libexec/mysql-mmm/monitor/kill_host

    #

    monitor_user        mmm_monitor    监控的用户名

    monitor_password    mmm_monitor    监控的密码

debug 0

至此77788081的配置文件都配置完毕,然后在/etc/init.d/里面有两个服务:

这两个服务mysql-mmm-agent77788081这四台主机必须要启动的,因为这就是mmm的主要核心服务,还有一个主要是控制和监控mmm的服务是:mysql-mmm-monitor该服务只需要其中一台机器启动即可,可把该服务分别加到ntsysv里面,其中77启动mysql-mmm-agentmysql-mmm-monitor两个服务,其它三台机器788081只启动mysql-mmm-agent服务即可。

然后服务启动之后主要在77机器上即启动了mysql-mmm-monitor的机器上执行一个命令,该命令为全局掌控这四台机器主从关系的命令:mmm_control

显示及查看mmm_control show主从关系看下图:

配置完成后以下形式为四台机器的关系:

其中192.168.1.110112111。这三个IP是虚拟出来的VIP地址。

以下列出mmm_control show后所能出现的状态解释:

online 主机是运行并没有任何问题

admin_offline 主机是手动设置离线

hard_offline 主机是离线状态(检查 ping/和或mysql 失败)

awaiting_recovery 主机是等待恢复状态该状态需要手动执行恢复操作

即执行mmm_control  set_online 主机名

replication_delay 复制日志有廷时(检查日志失败)

replication_fail 复制主线程没有运行(检查复制线程失败)

1.只有主机是在线(online)状态,才可以有自己的角色,当一个主机从在线状态到其它状态,所有角色被移除。

2.一个主机的状态是REPLICATIONDELAYREPLICATIONFAIL状态,将开关改回ONLINE状态

3.当这个主机的状态是HARDOFFLINE将开关到AWAITINGRECOVERY状态,如果每件都是ok状态,如果他DOWN的时间是和重启的时间在60秒以内自动设置成在线状态

4.复制日志失败,或者没有主从情况将是REPLICATION——DELAYREPLICATION——FAIL状态

5.复制日志失败

最后为mmm_control –help后的内容

 

然后开始一项项的做操作:

1:该操作是测试监控是否成功。

mmm_control ping

OK: Pinged successfully!

2:该操作是显示同台主机的状态

 

3:该操作是检查主机状态

4:该操作是设置主机在线状态mmm_control set_online db2

5:该操作是设置主机离线状态mmm_control set_offline db2

6mmm_control mode为显示主机模式:分别有三种模式

   主动模式active    该模式是默认的,即主库down了备份主库可接管主库角色,从库down了,另外一台从库可接管从库角色

   手动模式manual   该操作需要手动设置哪个库为主库哪个库为从库

   被动模式passive  

 7move_role角色互换,这个功能很有用到后面可以经常用到即主库77如果有需要停库可手动使用该命令把主库77的角色移到备份从库上面操作如下:

先执行以下命令看下当前状态:

77现在担任主库的角色,如果想让78担任主库的角色可执行以下命令:

OK: Role 'writer' has been moved from 'db1' to 'db2'. Now you can wait some time and check new roles info!

这是执行命令后显示的内容,然后再执行查看状态的命令:

看现在78已经是主的角色了。到此mysql-master-mastermmm)文档已经写完,具体内容还需要多操作多测试,以上测试均为线上机器。

备注mysqldump可用来导出不同表引擎的库,最常用的myisaminnodb,等。主要说一下导出和导入等基本参数(myisam表引擎为例):做mysqldump之前,可在mysql的会话里面先做全局读锁操作:flush tables with read lock;   切记不要退现当前会话,不然全局读锁失效。然后在通过mysqldump命令来把所需要的库导出来

mysqldump –u用户名 –p密码 -q -l --default-character-set=gbk bbs_gbk > /data1/bbs_gbk

-q是直接把数据写入硬盘,不写入缓冲区 -l和全局读锁相同

--default-character-set是导出库的字符集,在mysql5.1以后的版本中是默认的

然后把导出的/data1/bbs_gbk库文件复制到需要导入的机器上面,然后做导入操作:可在77主库上执行,然后其它三台从库788081会自动执行相同操作的。

mysql  -if --default-character-set=gbk bbs_gbk < /data/tmp/bbs_gb

-if的意思是忽略错误和强制导入

--default-character-set即导入时选择的字符集,如果导出时没有加该参数则导入时也不需要加该参数。这样77788081四台数据库上的库即同时导入成功。

 

阅读(573) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~