MySQL主从复制+备份
1,环境两台centos7,分别为msater、slave
Master:192.168.1.107 slave:192.168.1.102
2,关闭防火墙及其他服务
systemctl stop firewalld
systemctl stop firewalld
关闭selinux,vim /etc/sysconfig/selinux
3,搭建master数据库。
挂载磁盘
Centos7的yum源藐视没有正常安装mysql时的mysql-server文件,官网下载。
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm安装源到本机
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum安装数据库
yum install mysql-community-server -y
安装完成后,启动数据库,开机自启动
systemctl start mysqld
systemctl enable mysqld
初次登陆没有密码,设置密码
mysql -u root -p
use mysql
update user set password=PASSWORD('123456') where user='root';
flush privileges;
开启远程访问
允许远程主机,访问所有,root用户,任何ip,密码123456
grant all on *.* to 'root'@'%' identified by '123456';
允许单个IP访问(列)
grant all on *.* to 'root'@'192.168.1.102' identified by '123456';
4, 在master修改配置文件
Vim /etc/my.cnf
在【mysqld】节点添加
设置master的id,启用二进制日志
重启服务
systemctl restart mysqld
登陆MySQL查看master状态
show master status;
完成
5,搭建slave服务器,方法一样。
不用授权远程登陆,配置文件的id号不一样就行。
修改slave的配置文件vim /etc/my.cnf
重启数据库
systemctl restart mysqld
通过命令配置,同步数据库
change master to master_host='192.168.1.107',master_port=3306, master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=120;
开启slave:start slave
开启slave后,查询是否成功,可以看出已经成功。
show slave status \G;
在主创建一个库,看是否能同步到从
查看从,slave
主从成功了!
master_host 主服务器的IP地址
master_port 主服务器的PORT端口
master_log_file 和主服务器show master status中的File字段值相同
master_log_pos 和主服务器show master status中的Position字段值相同
start slave; #stop slave;停止服务,出错时先停止,再重新配置
show slave status\G; #查看SLAVE状态,\G结果纵向显示。必须大写.
只有出现两个yes才算成功。
注意:如果出错,可以看后面的错误信息。观察Slave_SQL_Running_State字段,它会记录详细的错误信息。如果正常,上面两个线程执行都应该是YES。这样当主库创建数据库、创建表、插入数据时,从库都会立刻同步,这样就实现了主从复制。
6, 开始备份数据库,使用tar冷备的方法,需在备份,及恢复数据库时候,都要关闭数据库。
主从备份,都需要在一个时间备份,一个时间恢复,保证数据的一致性,及避免数据库不一致,报错。同时备份。
主从已经同步,有一个test测试库。我们在主,和从使用同样的办法备份。
主从步骤一样。
备份成功,同时启动主从,在主上面删掉从,测试恢复。
从服务器也就没有了test库,关闭数据库,看是否能恢复。
主从都开始恢复
开启数据库
查询主从,是否恢复
查询数据是否存在
备份成功。
如果有问题,看看从服务器是否为yes