MySQL主从复制集群部署
1. 在各个节点上安装MySQL服务
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
2. 使用如下命令启动MySQL服务
systemctl start mysqld
3. 安装完成后使用命令查看root用户默认随机密码
grep "password" /var/log/mysql.log
4. 以root用户随机密码登录登录后修改root的密码
降低密码安全策略
set global validate_password_length=1;
set global validate_password_policy=0;
set password=password("root");
5. 为MySQL创建用户并授权远程访问
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
6. 配置主从同步
1). 创建同步用户
set global validate_password_length=1;
set global validate_password_policy=0;
create user repl identified by 'repl';
grant replication slave on *.* to 'repl'@'%' identified by 'repl';
2). 修改Master上修改 /etc/my.cnf
mysql的数据文件和二进制文件: /var/lib/mysql/
mysql的配置文件: /etc/my.cnf
mysql的日志文件: /var/log/mysql.log
[mysqld]
log-bin=mysql-bin
server-id=192_168_1_2
3). 重启master的mysql服务
systemctl stop mysqld
systemctl start mysqld
4). 查看mysql的master状态
show master status\G;
5). 在slave上修改 /etc/my.cnf
[mysqld]
server-id=192_168_1_3
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
read_only=1
6). 重启slave的mysql服务
systemctl restart mysql
7). 配置数据库主从同步
登录mysql
change master to master_host='192.168.1.2',master_port=3306,master_user='repl',master_password='repl',master_log_file='mysql-bin.000001',master_log_pos=154;
start slave;
show slave status\G;
注:只要 Slave_IO_Running 和 Slave_SQL_Running都是yes,说明主从同步部署成功;
查看binlog的内容:
cd /var/lib/mysql
mysqlbinlog --base64-output=decode-rows -v mysql-bin.000001
binlog格式:
statement: 基于SQL语句模式;
row: 基于行模式; 记录每一条记录修改后变化的值;
mixed: 混合模式; 由mysql自动判断处理;
查看binlog日志:
show binlog events in 'mysql-bin.000001';
查看binlog当前日志格式:
show variables like '%log%';
binlog_format 值即为当前binlog格式
修改binlog格式:
set global binlog_format='mixed';
或通过修改 /etc/my.cnf
[mysqld]
binlog_format=ROW
binlog默认存储在缓存binlog_cache中
会按照同步策略将binlog_cache中的数据刷新到磁盘;
sync_binlog=0 文件系统来调度把binlog_cache刷新到磁盘
sync_binlog=n 每执行n个事务就刷新一次到磁盘
延时监控
Nagios 做网络监控
mk-heartbeat 监控(利用在master和slave中建表,在master插数据,查看两条数据的时间差,太大会报警)
加Redis缓存,规避主从同步的时间差;