超简单的mysql主从复制学习文档

一、主从复制优势

1. 可以进行读写分离操作,提高程序性能(主库写,从库读)。
2. 在主服务器进行备份,避免备份期间影响主服务器服务。
3. 当主服务器出现问题时,可以迅速切换至从服务器。

二、原理

1. 主服务器(mster) 将数据改变记录到二进制日志 (binary log) 文件中
2. 从服务器(slave) 将主服务器的binary log文件拷贝到自己的中继日志 (relay log) 中
3. 从服务器(slave) 重做中继日志中的事件 将改变应用到自己的数据库当中, mysql 复制是异步的且串行化的

三、操作

环境 contos7,至少两台

安装mysql 参考:https://www.cnblogs.com/helf/p/11244711.html

一、下载mysql5.7的rpm安装包

下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
下载对应的MySQL版本,要求版本必须大于5.6

二、将下载到的MySQL上传至服务器进行解压
[root@localhost src]# tar -xvf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar
三、验证系统环境
  • 删除mariadb
查看:[root@localhost bin]# rpm -qa|grep mariadb
卸载:[root@localhost bin]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
  • 安装环境依赖
[root@localhost src]# yum install libaio
[root@localhost src]# yum install perl
[root@localhost src]# yum install net-tools
安装
[root@localhost src]# rpm -ivh mysql-community-common-5.7.24-1.el7.x86_64.rpm
[root@localhost src]# rpm -ivh mysql-community-libs-5.7.24-1.el7.x86_64.rpm
[root@localhost src]# rpm -ivh mysql-community-client-5.7.24-1.el7.x86_64.rpm
[root@localhost src]# rpm -ivh mysql-community-server-5.7.24-1.el7.x86_64.rpm

报错

error: Failed dependencies:
    mysql-community-common(x86-64) >= 5.7.9 is needed by mysql-community-libs-5.7.19-1.el6.x86_64

解决方法

在语句后面加上 --nodeps --force,如 rpm -ivh mysql-community-libs-5.7.33-1.el7.x86_64.rpm --nodeps --force

查看状态、启动MySQL服务
#查看mysql启动状态
[root@localhost src]# service mysqld status

#启动mysql       active(running)代表启动成功
[root@localhost src]# service mysqld start
修改MySQL root密码
#查看临时密码:得知临时密码就是如图
[root@localhost src]# grep password /var/log/mysqld.log

#用临时密码登录mysql
[root@localhost src]# mysql -uroot –p
#修改成新的密码
mysql> set password = password("Szfore_68638");
为root账户可以外部访问
# 需要登录MySQL 进行操作
use mysql;//切换值mysql表
update user set host="%" where user = 'root';//设置所有IP可以登录
FLUSH PRIVILEGES;//更新权限
为root账户设置主从备份权限
grant replication slave on *.* to  "root"@"%"  identified  by  "rootpassword";
FLUSH PRIVILEGES;
#root:root账户
#rootpassword:root密码

设置主从备份

1、关闭主服务器的防火墙
关闭防火墙:systemctl stop firewalld.service
查看防火墙状态:systemctl status firewalld.service
禁止开机启动:systemctl disable firewalld.service
2、如果是克隆的服务器,需要修改mysql uuid,不是则跳过
cd /var/lib/mysql/
vi auto.cnf
//修改server-uuid,随便修改一位,保证uuid唯一
3、打开主服务器(master),修改my.cnf

先去找 /etc/my.cnf 没有再去找 /etc/mysql/my.cnf,或者全局搜索
我的是在 /etc/my.cnf
在文件最后追加如下代码

server-id=1
log-bin= master-bin
binlog_do_db=study
binlog-ignore_db=mysql
read-only=0

解释:
server-id=1 // 复制组中的每台服务器都要配置唯一的 Server ID,取值范围是 1 到 (232)−1,你自己决定取值,必须保证值唯一
log-bin=master-bin // 日志文件名以 “master-bin” 作为前缀
binlog-do-db=finance_online // 要同步的 finance_online 数据库
如要同步多个数据库,就多加几个 replicate-db-db = 数据库名
binlog-ignore-db=mysql // 要忽略的数据库
read-only // 主机 读写都可以 (必须)

重启 mysql 服务器

service mysqld restart;

登录上 mysql 然后执行:show master status;
在这里插入图片描述
记住里面的 File 和 Position 的值 待会会用到!

4、打开从服务器(slave),修改my.cnf

先去找 /etc/my.cnf 没有再去找 /etc/mysql/my.cnf,或者全局搜索
我的是在 /etc/my.cnf
在文件最后追加如下代码

server-id=2
log-bin=slave-bin
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index

重启 mysql 服务器

service mysqld restart;

登录上 mysql 然后执行:
停止slave
在这里插入图片描述
然后配置连接主服务器的信息,执行如下命令

CHANGE MASTER TO MASTER_HOST='192.168.40.133',
MASTER_USER='root',
MASTER_PASSWORD='rootpassword',
MASTER_LOG_FILE='master-bin.000002',
MASTER_LOG_POS=1196;

解释:
192.168.40.133 主服务器IP
root MySQL账户
rootpassword MySQL密码
master-bin.000002 主服务器登录MySQL执行(show master status;)查看到的File
1196 主服务器登录MySQL执行(show master status;)查看到的Position
在这里插入图片描述
启动slave

start slave;

在这里插入图片描述
查看slave状态

show slave status\G

在这里插入图片描述
这两处都为ok就算配置成功,就可以在主服务器设置的数据库里面操作sql语句,查看从服务器是否同步了
如果按照以上步骤操作,出现以下问题:
Slave_IO_Running:Connecting; Slave_SQL_Running:Yes的问题。
很有可能就是主服务防火墙问题,请确认主服务器防火墙是否关闭
Slave_SQL_Running: no
很有可能时uuid相同导致,请确保uuid不一致

5、配置双主
只需要在之前master的配置的基础上增加以下配置
log-slave-updates
auto-increment-increment=2
auto-increment-offset=1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值