推荐
Mycat2版部署mysql读写分离
Mycat1.6版部署mysql读写分离
CentOS 7.9服务器,一分钟部署完mysql8.0
Ubuntu22部署MySQL8.0二进制安装
CentOS 7.9,二分钟搭建好MySQL8.0-PXC集群(实操不说原理)
一/配置my.cny
安装:略(看上面的)
主库
[root@192_168_1_7 ~]# cat /etc/my.cnf
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
port = 3306
log-bin=mysql-bin
server-id=7
#binglog日誌格式
binlog_format="ROW"
#binlog过期清理时间
expire_logs_days=7
#binlog每个日志文件大小
max_binlog_size=100m
从库
[root@192_168_1_8 ~]# cat /etc/my.cnf
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
port = 3306
log-bin=mysql-bin
server-id=8
#binglog日誌格式
binlog_format="ROW"
#binlog过期清理时间
expire_logs_days=7
#binlog每个日志文件大小
max_binlog_size=100m
二/新建主从用户
主:master操作:建立test帐号,密码12345678,授权从服务器192.168.1.8 ip登陆
mysql> grant super,replication slave on *.* to 'test'@'192.168.1.8' identified by '12345678';
mysql> flush privileges;
授权完成后,在从服务器上登陆测试
mysql -u test -h192.168.1.7 -p12345678
三/主mysql加上锁
给主mysql加上锁,防止有新的数据写入
mysql> flush tables with read lock;
查看二进制日志id,配置从库需要使用到
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000011 | 668 | | |
+------------------+----------+--------------+------------------+
mysql> exit
四/从库配置
暂停从库复制线程:
mysql> slave stop;
配置主从关系:
mysql> change master to
-> master_user='test', --主库复制的帐号
-> master_password='12345678', --密码
-> master_host='192.168.1.7', --主IP
-> master_port=3306, --端口
-> master_log_file='mysql-bin.000011', --主二进制日志id
-> master_log_pos=668; --主二进制日志id号
启动从复制线程
mysql> start slave;
五/查看状态
从库
mysql> show slave status\G
........
Master_Host: 192.168.1.7
Master_User: test
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000011
Read_Master_Log_Pos: 668
Relay_Log_File: mysql-relay-bin.006592
Relay_Log_Pos: 43991963
Relay_Master_Log_File: mysql-bin.000011
Slave_IO_Running: Yes
Slave_SQL_Running: Yes --两YES表示正常
Replicate_Do_DB:
........
主库解锁mysql:
mysql> unlock tables;
测试一下数据库是否同步
在主库上创建库、表和插入表数据后,在从库是否有相同数据
六/zabbix监控主从是否正常
1/编写脚本
[root@192_168_1_8 zabbix_agentd.d]# ll
总用量 8
-rwxr-xr-x 1 root root 202 8月 10 2020 slave.sh #要给权限
-rw-r--r-- 1 root root 2484 8月 10 2020 userparameter_mysql.conf
[root@192_168_5_88 zabbix_agentd.d]# cat slave.sh
#!/bin/bash
case $1 in
mysql_slave)
/usr/local/mysql/bin/mysql -uzabbix -e 'show slave status\G' |grep -E "Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}' |grep -c Yes
;;
esac
[root@192_168_1_8 zabbix_agentd.d]# cat userparameter_mysql.conf #最后面添加就行
UserParameter=mysql.slave[*],sudo /etc/zabbix/zabbix_agentd.d/slave.sh $1
2/设置主库新建zabbix用户权限
2/在zabbix服务器测试是否正常收到数据
[root@localhost ~]# zabbix_get -s 192.168.1.8 -k mysql.slave[mysql_slave]
2
[root@localhost ~]#
3/添加zabbix监控
就这样了,很简单,两分钟就搞定了。