MySQL主从复制

1、简介
我们为什么要用主从复制?主从复制目的:
可以做数据库的实时备份,保证数据的完整性;
可做读写分离,主服务器只管写,从服务器只管读,这样可以提升整体性能。

下图是MySQL官方给出了使用Replication的场景:


原理图:

2、VMware安装 CentOS-7-x86_64-DVD-1511.iso 此步骤略过
暂时分配2G空间,等所有都安装完毕就改成1G (为了安装软件快速 电脑内存8G) 先装两台,在装一台
分配IP为 192.168.0.220、192.168.0.221、192.168.0.222 简单起见root 和 myql密码 都为123456
安装成功后安装两个软件 yum install wget #获取软件 yum install net-tools #ifconfig 工具
3、安装mysql 并修改密码(centos7删除了MySQL,所以我们找到其他源)
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-server
service mysqld restart
mysql -u root
use mysql; update user set password=password(‘123456′) where user=’root’;
GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION; — 配置外网访问
FLUSH PRIVILEGES;


4、 设置静态ip ,端口开放,以及防火墙的关闭。
vi /etc/sysconfig/network-scripts/ifcfg-eno16777736

BOOTPROTO=static #dhcp改为static(修改)
ONBOOT=yes #开机启用本配置,一般在最后一行(修改)
IPADDR=192.168.0.222 #静态IP(增加)192.168.0.221
GATEWAY=192.168.0.1 #默认网关,虚拟机安装的话,通常是2,也就是VMnet8的网关设置(增加)
NETMASK=255.255.255.0 #子网掩码(增加)
DNS1=192.168.0.1 #DNS 配置,虚拟机安装的话,DNS就网关就行,多个DNS网址的话再增加(增加)

关闭防火墙 修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled 重启

1、关闭firewall:
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl mask firewalld.service

2、安装iptables防火墙
yum install iptables-services -y

3.启动设置防火墙
# systemctl enable iptables
# systemctl start iptables

4.查看防火墙状态

systemctl status iptables

5编辑防火墙,增加端口
vi /etc/sysconfig/iptables #编辑防火墙配置文件
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
:wq! #保存退出

3.重启配置,重启系统
systemctl restart iptables.service #重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动

5.配置主从复制
重复以上步骤安装三台机器 然后把内存设置为1G,接下来配置主从

在master服务器建立账号(backup 密码 123456) 可以让slave复制
use mysql;
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO backup@’192.168.0.%’ IDENTIFIED BY ‘123456’;
FLUSH PRIVILEGES;

接下来对master进行配置(/etc/my.cnf),包括打开二进制日志,指定唯一的servr ID。例如,在配置文件加入如下值:
server-id=1
log-bin=mysql-bin
server-id:为主服务器A的ID值
log-bin:二进制变更日值
重启master,运行SHOW MASTER STATUS

从服务器 server-id顺延
log-bin = mysql-bin
server-id = 2
relay-log = mysql-relay-bin
log-slave-updates = 1
read-only = 1

重启服务slave

CHANGE MASTER TO MASTER_HOST=’192.168.0.220′,
MASTER_USER=’backup’,
MASTER_PASSWORD=’123456′,
MASTER_LOG_FILE=’mysql-bin.000001′,
MASTER_LOG_POS=0;

MASTER_LOG_POS的值为0,因为它是日志的开始位置。
你可以用show slave status \G语句查看slave的设置是否正确:

Slave_IO_State, Slave_IO_Running, 和Slave_SQL_Running是No
表明slave还没有开始复制过程。日志的位置为4而不是0,这是因为0只是日志文件的开始位置,并不是日志位置。实际上,MySQL知道的第一个事件的位置是4。
为了开始复制,你可以运行:
mysql> START SLAVE;
mysql> show slave status \G

enjoy

centos7-mysql主从复制配置

Comments are closed.

Post Navigation