目录
安装部署mysql主从复制环境
实验环境:centos6
实验机器:2台
主从复制的准备操作
安装部署两台或多台mysql数据库
yum -y install mysql mysql-server
关闭防火墙和selinux
service iptables stop #关闭防火墙
setenforce 0 #临时关闭selinux
查看mysql的版本信息
mysql -V #输出mysql的版本信息
启动mysql服务,查看系统中是否存在mysql进程,并查看mysql的端口号
service mysqld start #centos6中MySQL启动使用mysqld
ss -anp |grep mysql
#ss命令可以用来获取socket统计信息,能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效
修改mysql配置文件
# 以下操作在主服务器上
修改配置mysql的主配置文件 (主数据库)
1.mysql主配置文件路径
vim /etc/my.cnf
2.配置文件内添加以下内容
server-id=1 # 主数据库id为1 主从值不得相同
log_bin=mysql-bin # 开启二进制日志
:wq #保存退出
3.重启mysql服务
service mysqld restart
查看mysql二进制日志信息
进入mysql
mysql -uroot # 原始情况下mysql中root默认的密码为空
执行的命令;
show master status;
在mysql中新建数据库
create database name;
在mysql中新建用户并授权
grant all on *.* to 'sjl'@'%' identified by '123';
解释: 在master的数据库服务器中建立一个复制的账户,每个slave使用该账户链接master来进行复制,设置所有权限(根据具体情况自定)。
上面创建了一个sjl用户,密码是123。只允许在所有段的ip地址的登录。
修改配置mysql的主配置文件 (从数据库)
1. mysql主配置文件路径
vim /etc/my.cnf
2.配置文件内添加以下内容
server-id=2 # 主数据库id为1 主从值不得相同
relay_log=relay-logs # 开启中继日志,可以自定义目录,mysql用户有权限即可
:wq #保存退出
3.重启mysql服务
service mysqld restart
# 以下内容在数据库内操作
查看中继日志的启动状态
show global variables like '%relay%';
连接master服务器
change master to
master_host='11.11.11.12',
master_user='sjl',
master_password='123',
master_log_file='master-bin.000001',
master_log_pos=106;
选项解释:
master_host:master 服务器IP
master_user:master 服务器授权用户,也就是 Master 前面创建的那个用户
master_password:master 服务器授权用户对应的密码
master_log_file:master binlog 文件名
master_log_pos:master binlog 文件中的 Postion 值
手动启动复制线程:
start slave;
mysql主从效果图
测试
自行测试.
主数据库创建一个数据库,
从数据库查看
主从服务检测脚本
前期准备工作
安装邮件报警命令 mail
yum -y install mailx
配置
vi /etc/mail.rc 在文件尾加上如下配置
set from=*****@163.com # 用那个邮箱发送
set smtp=smtp.163.com
set smtp-auth-user=*****@163.com
set smtp-auth-password=**** # 不是邮箱密码,是授权码
set smtp-auth=login
测试
[root@localhost ~]# echo "MySQL"|mail -s mysql ****0@qq.com
内容 | mail -s 标题 接收邮箱
shell脚本
#!/bin/bash
# 数据库登录
mysql="mysql -uroot -p1234"
while true
do
# 检测关键字
array=($($mysql -e "show slave status\G"|egrep '_Running:|Behind_Master|Last_SQL_Errno'|awk '{ print $NF }'))
# 判断关键字
if [ "${array[0]}" == "Yes" -a "${array[1]}" == "Yes" -a "${array[2]}" == "0" ]
then
# 运行正常的输出
echo "MySQL 主从正常"
else
# 运行失败,发送报警信息
echo "MySQL 主从服务 报错 管理员及时处理"|mail -s mysql ******@qq.com
break
fi
sleep 10
done
测试脚本运行效果