共计 3856 个字符,预计需要花费 10 分钟才能阅读完成。
基础搭建 MySQL-3M 架构
mysql-mmm-2.2.1.tar.gz
下载地址:
http://mysql-mmm.org/downloads
cpan: 会在网上将提供 perl 模块的这些地址 down 到本地
配置 cpan 使用 163 作为我们的 Perl 的模块的安装源(国内最快)
就是在 perl 界面中一直回车, 最后会提示选择安装源地区, 依次选择到 163 的(壮哉我大 163)
步骤:
perl -MCPAN -e shello conf init // 开始配置, 第一个我们选 no, 然后一路回车下去, 直到 mirror by 这部分, 然后选择 Asia,China,163 的源o conf commit // 保存配置, 防止下次启动还需要配置
在命令行中:
install YAMLinstall Algorithm::Diffinstall Class::Singletoninstall DBIinstall DBD::mysql注意: 在安装这个模块之前, 假如是编译安装的mysql, 那么需要再开一个窗口:cd /etc/ld.so.conf.decho "/usr/local/mysql/lib">>/etc/ld.so.conf.d/qt-x86_64.conf // 将编译安装的 mysql 的 lib 目录路径添加进去ldconfig // 重新导入 /etc/ld.so.conf.d 里的配置文件, 将配置文件中的动态库都加载一下install File::Tempinstall Log::Dispatchinstall Log::Log4perlinstall Mail::Sendinstall Net::ARPforce install Net::Ping// 加个 force, 只安装, 不测试(测试会 ping 国外的服务器)install Proc::Daemoninstall Thread::Queueinstall Time::HiRes
将 mysql-mmm-2.2.1.tar.gz 解压, 直接 make install(别的什么都不用做)
然后去配置 /etc/mysql-mmm/mmm_common.conf
上面步骤三台机器都要做
配置 mmm_common.conf
vim mmm_common.conf
active_master_role writer // 主的配置是写<host default>cluster_interface eth0 // 在每个节点之上都要指定 3M 之间互相通信的网卡pid_path /var/run/mmm_agentd.pidbin_path /usr/lib/mysql-mmm/replication_user root // 此处是指定账号密码, 注意是主从的账号密码replication_password dongscagent_user mmmagentagent_password mmmagent</host><host db1>// 指定 M1ip 172.16.60.90mode masterpeer M2 // 对端名字, 填写 M2 的主机名</host><host db2>// 指定 M2ip 172.16.60.33mode masterpeer M1 //M1 主机名</host><host db3>// 指定 Slaveip 172.16.60.32mode S1</host><role writer>hosts M1, M2 // 表示允许写的主机名ips 172.16.60.91//virtual IP, 谁是写角色, 此 IP 在谁上飘着, 也就是连到此 IP 上进行写mode exclusive // 该模式表示在同一时间只允许一个数据库写</role><role reader>hosts M2, S1 // 表示将哪几个机器用于读ips 172.16.60.34,172.16.60.31// 此处写两个, 假如有个坏掉了, 那么两个 IP 地址会飘在一起mode balanced</role>
通过虚拟 IP 这种方式, 能够保证 IP 不用更改, 依旧可用
注意: 将这个文件 cp 到所有服务器上, 都能用(但是需要注意服务器使用哪个端口通信)
更改每个 mmm_agent.conf
vim mmm_agent.conf // 将里面的 this 改为自己的主机名字[root@Teach-Mysql mysql-mmm]# cat mmm_agent.confinclude mmm_common.confthisTeach-Mysql
前提是在每个服务器上, 将三个名字的解析都要写上
[root@Teach-Mysql mysql-mmm]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6172.16.60.90 M1172.16.60.33 M2172.16.60.32 S1
然后在 monitor 机器上配置 mmm_mon.conf
[root@S1 mysql-mmm]# cat mmm_mon.confinclude mmm_common.conf<monitor>ip 127.0.0.1pid_path /var/run/mmm_mond.pidbin_path /usr/lib/mysql-mmm/status_path /var/lib/misc/mmm_mond.statusping_ips 172.16.60.90,172.16.60.33,172.16.60.32// 这里写上 M1,M2,Slave 的真实 IP</monitor><host default>monitor_user mmm_monitormonitor_password RepMonitor</host>debug 0
每个服务器都启动 agent,monitor 启动 monitor
启动方法:
每一个服务器启动 agent
/etc/init.d/mysql-mmm-agent start
monitor 服务器启动 monitor
/etc/init.d/mysql-mmm-monitor start
假如启动报错, 提示少 pm 文件, 那么看前面的名字, 就是前面的模块少装了
那么当配置完成之后, 所有的数据库需要自己启动起来
状态
mysql-mmm 有 6 种状态
1.online2.admin_offline3.hard_offline4.awaiting_recovery5.replication_delay6.replication_fail各种状态的转换如下:1.online状态是正常的状态, 可以充当各种角色.2.admin_offline是手动下线的状态3.复制延迟会导致 replication_delay 状态4.复制中断 (sql_thread,io_thread) 会导致 replication_fail 状态5.从 replication_delay 或者 replication_fail 状态可以直接恢复到 online 状态, 除非主机被设置为抖动.6.ping不通并且 (或者)mysql 连接中断, 会导致 hard_offline 状态.7.如果能 ping 通, 并且 mysql 连接状态正常, 则会变成为 awaiting_recovery 状态.8.两种情况可以从 awaiting_recovery 状态转变为 online 状态:a. 故障时间少于 60 秒并且没有重启过.b. 设置了auto_set_online >0(抖动状态除外)
此处注意时间需要同步, 同步时间命令:
ntpdate time.windows.com
需要注意的地方:
1.M1,M2 的配置文件中, 必须设置
log_slave_updates=1read_only=onauto_increment_increment=2M1:auto_increment_offset=1M2:auto_increment_offset=2// 自增长字段的起始值
2. 所有的配置文件中必须设置:
read_only=on
3. 一定要注意时间问题:
ntpdate time.windows.com
4. 假如没有手动配置 auto_set_online
当 mmm_mon.conf 文件的 auto_set_online 10 参数设置小于 60 时,db1 和 db2,mysql 服务停止启动切换时,不会出现 AWAITING_RECOVERY 状态,只要 mysql 服务启动即会自动切换到 online 状态, 但是当配置参数等于或者大于 60 时,即会出现 AWAITING_RECOVERY, 所以需要手动启动,
mmm_control set_online db1
即可修改 db1 为在线 online 状态
5. 注意在 mmm_commom.conf 文件中,replication_user 确定是主从复制的用户
6. 确定新建的用户在每个服务器中都能够用主机名来连接成功
7. 在执行 /
etc/init.d/mysql-mmm-agent stop
的时候, 可能不会讲进程完全杀死, 那样再重启进程的时候,log 会出现 Can’t create socket!, 此时应当 kill 干净
- 在做所有的主从时,change master to 全部使用 IP 地址, 不能使用主机名
- 在编辑 mmm_common.conf 文件时, 确认双主互相对应
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-10/136117.htm






