MySQL主从备份

实现mysql的主从备份

如想了解更多的主从配置点击跳转

1、安装mysql

安装步骤省略,详情可以查看点击跳转
我这里为两台centos安装MySQL5.7

  • 一台后面做为master(主)192.168.25.5
  • 一台做为从(slave )192.168.25.6

为减少不必要的麻烦,最好保证master的mysql的数据与slave的数据库一致

2、配置主(master)

亲先将防火墙关闭

systemctl disable firewalld.service

第一步:修改/etc/my.conf文件

该文件在window下为C:\ProgramData\MySQL\MySQL Server 5.7\my.ini

在[mysqld]中添加:

binlog-ignore-db=mysql
log-bin=master_log
server-id=1
#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_offset = 1           
#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_increment = 1     
#将函数复制到slave  
log_bin_trust_function_creators = 1 
  • server-id
    master端的ID号;Master的server-id必须小于slave的server-id
  • log-bin
    同步的日志路径及文件名,主从备份时必须要有,这个目录要是mysql有权限写入的,最后的日志文件名称就是你命名的再加上后期mysql会自动加上文件名后缀和文件类型(如master_bin.00001)
  • binlog-ignore-db:
    不同步数据库(我这里是mysql)

第二步:重启mysql服务

systemctl restart mysql

第三步:建立帐户并授权slave
说明其它主机可以使用slave这个用户账号来登陆master主机的MySQL(如果在授权的用户不存在就会自动创建),一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全

GRANT ALL PRIVILEGES ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';

第四步:刷新权限

mysql> FLUSH PRIVILEGES;

第五步:查看mysql现在有哪些用户
mysql安装完成以后会有一个叫做mysql的数据库,其中有一张表叫做user,主要字段有user,host等等,记录的就是mysql的用户情况

mysql>select user,host from mysql.user;

第六步:查询master的状态

show master status;
show master status\G;

请记住红线
请记住

3、 配置从slave

第一步:修改/etc/my.conf文件

在[mysqld]中添加

server_id = 2

还有许多其它选项,请查看官方文档,我这就不再多说

第二步:修改uuid
主从模式要求mysql的物理名称不能一致,而我这里的两台的机器是因为是克隆的,所以一样,我需要修改,如果你不是,可省略该步骤

vim var/lib/mysql/auto.conf (或者删除/var/lib/mysql/auto.cnf文件)

给予server-uuid一个随意值即可(可以直接改变最后一位数值),再重新启动服务mysql

systemctl restart mysql

第三步:关闭slave功能,是关闭自己这台作为slave的功能(这个可以查看自己写文章,里面有具体说明 MySql两台机器互为主从
因为MySQL5.5以后默认开启slave功能,所以这里先停止slave

mysql>stop slave;

第三步:在slave中执行同步命令

#执行同步命令,设置主服务器ip,同步账号密码,同步位置
mysql>change master to master_host='192.168.25.5',master_port=3306,master_user='slave',master_password='123456',master_log_file='master_log.000001';

注意语句中间不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户(前面在master上使用grant),这里的master_log.000001就是log-bin对应的值)。

第四步:开启同步功能

mysql>start slave;

4、测试MySQL的主从备份

测试就是在主库中进行DDL以及DML语句的执行,看从库是否会跟主库一样发生变化

master中

create database test;
use test;

CREATE TABLE `test` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

insert into test(username,passwor) values('gxm','123456');

查看master与slave是否都有变化,如果数据一致,就配置成功

5、问题的解决

主从配置后,一旦主节点重启后,可能就无法同步数据,原因是因为 binlog日志不一致了,一旦无法同步 其中的 slave_sql_running,Slave_IO_Running,肯定有一个是有问题的,具体的可以看下这篇文章。
MySQL数据同步,出现Slave_SQL_Running:no和slave_io_running:no问题的解决方法

mysql replication 中slave机器上有两个关键的进程,死一个都不行,一个是slave_sql_running,一个是Slave_IO_Running,一个负责与主机的io通信,一个负责自己的slave mysql进程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值