MySQL配置主从同步

一、环境信息

服务器操作系统:CentOS Linux release 7.6.1810 (Core)
数据库版本:mysql-5.7

二、下载软件

# 操作系统下载地址
http://mirrors.aliyun.com/centos/

# MySQL Yum 仓库
https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

三、安装MySQL

# 1.切换到/usr/local/目录下
[root@192 local]# cd /usr/local/

# 2.使用wget命令下载文件
[root@192 local]# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

# 3.安装MySQL源
[root@192 local]# rpm -Uvh mysql80-community-release-el7-3.noarch.rpm

# 4.查看启用的MySQL源
[root@192 local]# yum repolist all | grep mysql

# 5.如果mysql80-community是启用的,我们就把他禁用,然后启用mysql57-community,如果不修改,仓库默认会安装mysql8。
[root@192 local]# yum-config-manager --disable mysql80-community
[root@192 local]# yum-config-manager --enable mysql57-community

# 6.安装mysql57
[root@192 local]# yum install mysql-community-server

# 7.启动mysql服务器,并查看状态
[root@192 local]# systemctl start mysqld
[root@192 local]# systemctl status mysqld

# 8.查看mysql默认密码
[root@192 local]# grep 'temporary password' /var/log/mysqld.log

# 9.进入数据库修改默认密码,输入以下命令会要求输入密码,输入第8步得到的默认密码即可登录
[root@192 local]# mysql -uroot -p

# 10.在mysql命令行状态下输入以下命令,修改密码为 MySql@001 ,其他密码自行设置
# 注意:密码至少包含一个大写字母,一个小写字母,一位数字和一个特殊字符,并且密码总长度至少为8个字符。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MySql@001';

# 11.可以远程连接
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MySql@001' WITH GRANT OPTION;
mysql> flush privileges;

# 12.设置开机自启,不想自启的话可以忽略
[root@192 local]# systemctl enable mysqld
[root@192 local]# systemctl daemon-reload

# 13.查看mysql配置文件,后面需要修改
[root@192 local]# cat /etc/my.cnf

# 14.开放3306端口
[root@192 local]# firewall-cmd --permanent --add-port=3306/tcp
[root@192 local]# systemctl restart firewalld.service

三、服务器准备

在主服务器和从服务器上都安装的相同的mysql

主服务器:CentOS7-MySQL-Master,IP:192.168.37.129
从服务器01:CentOS7-MySQL-Slave01,IP:192.168.37.130

四、配置主服务器Master

[root@192 ~]# vim /etc/my.cnf
## 在[mysqld]下追加
[mysqld]
## 服务标识,局域网内要唯一
server-id=129
## 开启二进制日志功能,名字任意
log-bin=mysql-bin
## 不需要同步的数据库,多个就复制多行
binlog-ignore-db=mysql
## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存。
binlog_cache_size=1M
## 复制模式:混合模式
binlog_format=mixed

五、配置从服务器Slave01

# 1.配置服务器的配置文件
[root@192 ~]# vim /etc/my.cnf
## 在[mysqld]下追加
[mysqld]
## 服务标识,局域网内要唯一
server-id=130
## 开启二进制日志功能,名字任意
log-bin=mysql-slave-bin
## 中继日志文件
relay_log=mysql-relay-bin
## 不需要同步的数据库,多个就复制多行
binlog-ignore-db=mysql
## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存。
binlog_cache_size=1M
## 开启同步函数和存储过程
log_bin_trust_function_creators=true
## 跳过复制时错误,防止错误时中断
slave_skip_errors=1062

# 2.在主服务器mysql命令行模式下输入下列命令,找到Position(开始进行复同步的位置)
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      154 |              | mysql            |                   |
+------------------+----------+--------------+------------------+-------------------+

# 3.在从服务器mysql命令行模式下输入
mysql> change master to master_host='192.168.37.129', master_user='root', master_password='MySql@001', master_port=3306, master_log_file='mysql-bin.000003', master_log_pos=154;
mysql> start slave;

# 4. 查看链接状态
mysql> show slave status\G;
## 要下列2个参数都为Yes才表示链接成功
......
        Slave_IO_Running: Yes
       Slave_SQL_Running: Yes
......

六、测试

# 在主服务器上新建一个数据库 test001
# 在mysql命令行模式下输入以下命令

# 1.查看主服务器的数据库列表
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

# 2.在主服务器上创建一个数据test001
mysql> create database test001;

# 3.查看从服务器是否同步
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test001            |
+--------------------+
posted @ 2021-05-06 19:57  喵喵扑  阅读(246)  评论(0编辑  收藏  举报