标签:数据库名 mmm 使用 主主 pos ips cal def local
搭建 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
……
<host default>
cluster_interface ens32 #网卡名称
……
replication_user replication #主从授权用户
replication_password 123456
agent_user mmm_agent #代理用户
agent_password 123456
....
<host db1>
ip 192.168.217.129 #主服务器
mode master
peer db2
</host>
....
<host db2>
ip 192.168.217.130 #主服务器
mode master
peer db1
</host>
....
<host db3>
ip 192.168.217.131 #从服务器
mode slave
</host>
....
<host db4>
ip 192.168.217.132 #从服务器
mode slave
</host>
....
<role writer>
hosts db1, db2
ips 192.168.217.100 #主服务器虚拟IP地址
mode exclusive
</role>
....
<role reader>
hosts db3, db4
ips 192.168.217.200, 192.168.217.210 #从服务器虚拟IP地址
mode balanced
</role>
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 #设置自动在线时间
……
<host default>
monitor_user mmm_monitor #监控用户
monitor_password 123456
</host>
在所有数据库上为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 配置中<host db1> 对应的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上会有两个地址 。
标签:数据库名 mmm 使用 主主 pos ips cal def local
原文地址:http://blog.51cto.com/13640803/2144621