十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本文主要给大家介绍什么是MySQL-mmm 高可用群集及怎么样搭建,希望可以给大家补充和更新些知识,如有其它问题需要了解的可以持续在创新互联行业资讯里面关注我的更新文章的。
成都创新互联专注于网站建设,为客户提供成都网站建设、网站制作、网页设计开发服务,多年建网站服务经验,各类网站都可以开发,品牌网站建设,公司官网,公司展示网站,网站设计,建网站费用,建网站多少钱,价格优惠,收费合理。
主机名 | 系统 | 主要软件 | IP | 虚拟IP |
---|---|---|---|---|
mysql-master1 | CentOS 7.3 x86_64 | mmm | 192.168.217.129 | 192.168.217.100 |
mysql-master2 | CentOS 7.3 x86_64 | mmm | 192.168.217.130 | 192.168.217.100 |
mysql-slave1 | CentOS 7.3 x86_64 | mmm | 192.168.217.131 | 192.168.217.200 |
mysql-slave2 | CentOS 7.3 x86_64 | mmm | 192.168.217.132 | 192.168.217.210 |
monitor | CentOS 7.3 x86_64 | mmm | 192.168.217.133 |
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #配置ALI云源,然后安装epel-release源。
yum clean all && yum makecache #删除缓存 下载到本地电脑缓存
yum -y install epel-release #安装epel 源 用于安装 mmm
yum -y install mysql-mmm* #安装 mmm 服务 在所有服务器上安装
vim /etc/my.cnf
[mysqld]
user = mysql #管理用户
basedir = /usr/local/mysql #工作目录
datadir = /usr/local/mysql/data #数据库文件
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid #pid 进程文件
socket = /usr/local/mysql/mysql.sock #链接数据库
server-id = 1
binlog-ignore-db=mysql,information_schema #不需要同步的数据库名称
log_slave_updates=true #从服务器更新二进制日志
sync_binlog=1 #同步二进制日志
auto_increment_increment=2 #字段一次递增值
auto_increment_offset=1 #自增字段的起始值
log-error=/usr/local/mysql/data/mysql_error.log #错误日志
general_log=ON #开启通用日志
general_log_file=/usr/local/mysql/data/mysql_general.log
log_bin=mysql-bin #二进制日志
slow_query_log=ON #开启慢查询日志
slow_query_log_file=mysql_slow_query.log
long_query_time=1
scp /etc/my.cnf root@192.168.217.130:/etc/ #对方有权限的用户和IP地址 输入yes 、密码进行复制
systemctl restart mysqld.service #修改所有数据库的 server-id 重启服务
mysql -u root -p #进入数据库
在m1上为m2授予从的权限,在m2上也要为m1授予从的权限
mysql>grant replication slave on *.* to 'replication'@'192.168.217.%' identified by '123456';
mysql>show master status; #记录日志文件名称和 位置值,在两台主上查看。
mysql>change master to master_host='192.168.217.129',
master_user='replication',master_password='123456',
master_log_file='mysql-bin.000001',master_log_pos=1104;
注意 指向的IP地址、日志名称、偏移量 ,不要搞错
mysql>start slave; #开启同步
mysql>show slave status\G; #查看链接状态
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上两台主都执行,从不需要 。可以在主服务器上创建数据库 、在另一台主服务器查看、删除,做测试。
指向随便一台主服务器即可
mysql>change master to master_host='192.168.217.129',
master_user='replication',master_password='123456',
master_log_file='mysql-bin.000001',master_log_pos=1104;
注意 指向的IP地址、日志名称、偏移量 ,不要搞错
start slave;
show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
测试主从、主主、同步 情况
cd /etc/mysql-mmm/
vim mmm_common.conf
……
cluster_interface ens32 #网卡名称
……
replication_user replication #主从授权用户
replication_password 123456
agent_user mmm_agent #代理用户
agent_password 123456
....
ip 192.168.217.129 #主服务器
mode master
peer db2
....
ip 192.168.217.130 #主服务器
mode master
peer db1
....
ip 192.168.217.131 #从服务器
mode slave
....
ip 192.168.217.132 #从服务器
mode slave
....
hosts db1, db2
ips 192.168.217.100 #主服务器虚拟IP地址
mode exclusive
....
hosts db3, db4
ips 192.168.217.200, 192.168.217.210 #从服务器虚拟IP地址
mode balanced
scp mmm_common.conf root@192.168.217.130:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.217.131:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.217.132:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.217.133:/etc/mysql-mmm/
cd /etc/mysql-mmm/
vim mmm_mon.conf
……
ping_ips 192.168.217.129,192.168.217.130,192.168217.131,192.168.217.132 #数据库服务器地址
auto_set_online 10 #设置自动在线时间
……
monitor_user mmm_monitor #监控用户
monitor_password 123456
在所有数据库上为mmm_agent授权
mysql>grant super, replication client, process on *.* to 'mmm_agent'@'192.168.217.%' identified by '123456';
在所有数据库上为mmm_moniter授权
mysql>grant replication client on *.* to 'mmm_monitor'@'192.168.217.%' identified by '123456';
flush privileges; #刷新
修改所有数据库的mmm_agent.conf文件
vim /etc/mysql-mmm/mmm_agent.conf
this db1 #/根据规mmm_common.conf 配置中 对应的IP地址 修改
在所有数据库服务器上启动代理服务
systemctl start mysql-mmm-agent.service #开启代理服务
systemctl enable mysql-mmm-agent.service #开机自启动
systemctl start mysql-mmm-monitor.service #启动监控服务
mmm_control show #查看各节点的情况
db1(192.168.217.129) master/ONLINE. Roles: writer(192.168.217.100)
db2(192.168.217.130) master/ONLINE. Roles:
db3(192.168.217.131) slave/ONLINE. Roles: reader(192.168.217.200)
db4(192.168.217.132) slave/ONLINE. Roles: reader(192.168.217.210)
mmm_control checks all #各种OK 说明运转正常
mmm_control move_role writer db2 #手动指定活跃服务器 注意:不会抢占
mmm_control show #查看各节点的情况
db1(192.168.217.129) master/ONLINE. Roles:
db2(192.168.217.130) master/ONLINE. Roles: writer(192.168.217.100)
db3(192.168.217.131) slave/ONLINE. Roles: reader(192.168.217.200)
db4(192.168.217.132) slave/ONLINE. Roles: reader(192.168.217.210)
测试 :关闭 mysql-master1 服务 ,查看 mysql-master2 会不会抢占 。注意:等待一段时间查看 。
关闭 mysql-slave1 服务 ,mysql-slave1 虚拟IP会自动漂移到mysql-slave2上 ,mysql-slave2上会有两个地址 。
看了以上关于什么是mysql-mmm 高可用群集及怎么样搭建,希望能给大家在实际运用中带来一定的帮助。本文由于篇幅有限,难免会有不足和需要补充的地方,如有需要更加专业的解答,可在官网联系我们的24小时售前售后,随时帮您解答问题的。