目录
一、主从复制
1.1、MySQL Replication
主从复制(也称 AB 复制)允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。
MySQL主从复制的优点包括:
-
横向扩展解决方案 - 在多个从站之间分配负载以提高性能。在此环境中,所有写入和更新都必须在主服务器上进行。但是,读取可以在一个或多个从设备上进行。该模型可以提高写入性能(因为主设备专用于更新),同时显着提高了越来越多的从设备的读取速度。
-
数据安全性 - 因为数据被复制到从站,并且从站可以暂停复制过程,所以可以在从站上运行备份服务而不会破坏相应的主数据。
-
分析 - 可以在主服务器上创建实时数据,而信息分析可以在从服务器上进行,而不会影响主服务器的性能。
-
备份 - 可以使用从服务器数据进行备份,减轻主服务器的压力。
1.2、Replication原理
1.3、准备工作(两台虚拟机)
1)两台虚拟机都必须关闭防火墙和selinux
[root@master ~]# systemctl stop firewalld && setenforce 0
2)修改时区
[root@master ~]# timedatectl set-timezone Asia/Shanghai
3) 同步网络时间
[root@master ~]# ntpdate time.windows.com
4) 修改主机名(master主库)
[root@master ~]# hostnamectl set-hostname master
5)做本地域名解析
[root@master ~]# vim /etc/hosts
6)Net模式下,固定静态IP地址
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.222.141
PREFIX=24
GATEWAY=192.168.222.2
DNS1=114.114.114.114
DNS2=8.8.8.8
二、清理环境(两台机器)
[root@slave ~]# yum -y erase `rpm -qa | grep -E "mysql|mariadb"`
[root@slave ~]# rm -rf /etc/my* /var/lib/mysql* /var/log/mysql*
#检查一下
[root@slave ~]# [[ ! -f /etc/my.cnf ]] && [[ ! -d /var/lib/mysql ]] && [[ ! -f /usr/bin/mysql ]] && echo "数据库已清除" || echo "数据库未清理"
三、安装数据库(两台机器)
1)上传mysql压缩包 rz(需要安装lrzsz)
[root@slave ~]# rz
2)解压
[root@slave ~]# tar xzvf mysql
3)初始化数据库
[root@slave ~]# systemctl start mysqld
4)修改数据库初始密码
[root@slave ~]# mysqladmin -p"`awk '/temporary password/{p=$NF}END{print p}' /var/log/mysqld.log`" password 'Qianfeng@123'
四、配置mysql主从库
(1)配置主库
1)创建binlog日志存放路径
[root@master ~]# mkdir -p /data/binlog
2)修改权限
[root@master ~]# chown -R mysql.mysql /data/binlog
3)修改MySQL配置文件
[root@master ~]# vim /etc/my.cnf
[mysqld]
server-id = 141
log-bin=/data/binlog/mysql-bin
4)重启数据库
[root@master ~]# systemctl restart mysqld
5)查询master状态
mysql> show master status\G
6)授权账号
mysql> grant replication slave on *.* to 'replication'@'%' identified by "Qianfeng@123456";
mysql> flush privileges;
(2)配置从库
1)修改MySQL配置文件
[root@master ~]# vim /etc/my.cnf
[mysqld]
server-id = 151
2)重启MySQL
[root@slave ~]# systemctl restart mysqld
3)配置从库
mysql> change master to
-> master_host='master',
-> master_port=3306,
-> master_user='replication',
-> master_password='Qianfeng@123456',
-> master_log_file='mysql-bin.000001',
-> master_log_pos=596;
4)启动slave
mysql> start slave;
5)刷新slave
MySQL> reset slave;
6)查看slave状态
mysql >show slave status\G
如果查询lslave状态出现两个yes,即我们的主从复制配置成功啦。小伙伴们快学起来吧!