1、安装前准备工作
第一步:克隆两台全新的数据库服务器,MASTER/SLAVE
第二步:首先启动MASTER,然后启动SLAVE,更改主机名称
Master:
# hostnamectl set-hostname master.itcast.cn#
su
Slave:
# hostnamectl set-hostname slave.itcast.cn#
su
第三步:更改静态IP配置,把Master和Slave都配置与规划一致,然后关闭NetworkManager
Master:
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=10.1.1.10
Slave:
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=10.1.1.100
Master/Slave:
# systemctl stop NetworkManager
# systemctl disable NetworkManager
设置完成后,重启网络,然后使用MX连接Master与Slave。
第四步:由于两台机器处于集群架构,需要互相连接。绑定主机名称与IP地址到/etc/hosts
Master/Slave:
# vim /etc/hosts
10.1.1.10 master.itcast.cn
10.1.1.100 slave.itcast.cn
第五步:关闭防火墙与SELinux
# systemctl stop firewalld
# systemctl disable firewalld
# systemctl list-unit-files|grep firewalld
# setenforce 0
# sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
第六步:配置yum源(建议使用腾讯源)
配置参考以前笔记(略)
第七步:时间同步
# ntpdate 182.92.12.11
2、MySQL主从复制核心思路
-
slave必须安装相同版本的mysql数据库软件
-
master端必须开启==二进制日志==;slave端必须开启==relay log日志==
-
master端和slave端的server-id号==不能一致==
-
slave端配置向master来同步数据
-
master端必须创建一个复制用户
-
保证master和slave端==初始数据一致==
-
配置主从复制(slave端)
-
3、MySQL主从复制的具体实践
第一步:上传MySQL软件包到Master与Slave
使用的是mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
第二步:在Master端安装、初始化以及运行mysql软件
① 安装MySQL软件
# vim mysql.sh
#!/bin/bash
yum install libaio -y
tar -xf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
rm -rf /usr/local/mysql
mv mysql-5.7.31-linux-glibc2.12-x86_64 /usr/local/mysql
useradd -r -s /sbin/nologin mysql
rm -rf /etc/my.cnf
cd /usr/local/mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql &> /root/password.txt
bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
cp support-files/mysql.server /etc/init.d/mysqld
service mysqld start
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
source /etc/profile
# source mysql.sh
Shell脚本其实就是命令的堆砌,把一堆Linux命令写在同一个文件中,一起执行。
② 安全配置
# mysql_secure_installation
③ 配置my.cnf(重点开启二进制日志)
# cd /usr/local/mysql
# vim my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/master.err
log-bin=/usr/local/mysql/data/binlog => 一定要开启二进制日志
server-id=10
character_set_server=utf8mb4 => utf8mb4相当于utf8升级版
配置完成后,重启mysqld服务
# service mysqld restart
# chkconfig --add mysqld
# chkconfig mysqld on
第三步:在Slave从服务器端安装mysql软件(不需要初始化)
① 安装MySQL软件
# vim mysql.sh
#!/bin/bash
yum install libaio -y
tar -xf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
rm -rf /usr/local/mysql
mv mysql-5.7.31-linux-glibc2.12-x86_64 /usr/local/mysql
useradd -r -s /sbin/nologin mysql
rm -rf /etc/my.cnf
cd /usr/local/mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
cp support-files/mysql.server /etc/init.d/mysqld
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
source /etc/profile
相对于主服务器MySQL的安装与配置,从服务器端不需要进行初始化操作,因为其数据将来都来自于主服务器。
② 配置my.cnf文件
# cd /usr/local/mysql
# vim my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3310
log-error=/usr/local/mysql/data/slave.err
relay-log=/usr/local/mysql/data/relaylog => 开启中继日志
server-id=100
character_set_server=utf8mb4
③ 把master主服务器的数据目录同步到slave从服务器
a. 把MASTER服务器中的mysqld停止掉
# service mysqld stop
b. 把MASTER服务器中的/usr/local/mysql/data目录下的auto.cnf文件删除
# rm -rf /usr/local/mysql/data/auto.cnf
没安装一个mysql软件,其data数据目录都会产生一个auto.cnf文件,里面是一个唯一性的编号,相当于我们每个人的身份证号码。
c. 把MASTER服务器中/usr/local/mysql中的data目录拷贝一份到SLAVE从服务器的/usr/local/mysql目录
# rsync -av /usr/local/mysql/data root@10.1.1.100:/usr/local/mysql/
d. 同步完成后,把主服务器与从服务器中的mysqld启动
# service mysqld start