1.主备原理
1)master将改变记录到二进制日志(binary log)中
2)slave将master的binlog拷贝到中继日志(relay log)
3)slave重做中继日志中的事件,将改变slave的数据
2.安装mysql5.7(centos7)
1)在官网下载mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar
2)检查是否存在旧的mysql
rpm -qa|grep -i mysql
3)如果有,则卸载
rpm -e –nodeps 包名
#如果提示错误,尝试用下列命令执行
rpm -ev 包名 --nodeps
rpm -e --noscripts 包名
4)查找旧版mysl目录并删除
# 查询
find / -name mysql
# 依次删除
rm -rf 文件名/目录
5) 上传mysql压缩包至linux(/opt/soft)
6)解压文件到当前目录
tar -xvf mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar
7)开始安装(按以下步骤安装,避免依赖倒置安装失败)
rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.19-1.el7.x86_64.rpm
安装过程可能会出现问题,需卸载 centos 自带的 mariadb 包
rpm -qa | grep mariadb
rpm -e 填写上面查出的名称 --nodeps
8)修改配置文件
vim /etc/my.cnf
#设置端口
port = 3306
#数据存储路径
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#错误日志路径
log-error=/var/log/mysqld.log
#日志路径
pid-file=/var/run/mysqld/mysqld.pid
disable-partition-engine-check=1
#只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve = 1
##数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server=utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server=utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
#最大连接数
max_connections=400
##最大错误连接数
max_connect_errors=1000
#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet=128M
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout=1800
wait_timeout=1800
#mysql binlog日志文件保存的过期时间,过期后自动删除
expire_logs_days=5
############################主从复制 设置########################################
#主库和从库的server-id不能相同
server-id = 1
#开启mysql binlog功能
log-bin=mysql-bin
#binlog记录内容的方式,记录被操作的每一行
binlog_format = ROW
##作为从库时生效,想进行级联复制,则需要此参数
log_slave_updates = on
#作为从库时生效,中继日志relay-log可以自我修复
#relay_log_recovery = 1
# 指定需要复制的数据库名为xayimsdb
replicate-do-db = test
9)启动mysql
service mysqld start
#查看mysql状态
service mysqld status
10)登录mysql
#修改my.cnf文件
vi /etc/my.cnf
#在[mysqld]添加skip-grant-tables 跳过登录验证
#登录mysql
mysql -p
按空格进入mysql
#更新密码
update user set authentication_string=PASSWORD('123456') where User='root';
flush privileges;
11)创建同步用户(主上操作)
# “ % ”代表匹配所有ip
create user 'hb'@'%' identified with mysql_native_password by '123456';
GRANT REPLICATION SLAVE ON *.* TO 'hb'@'从机ip';
flush privileges;
以上主库的配置完成(以相同的方式在从库上进行配置,注意要修改my.cnf的server-id,不能很主库相同)
12)配置完备库后,登录备库(sql方式执行)
change master to master_host='主库ip',
master_port=3306,
master_user='hb', 上面主库创建的用户名
master_password='123456', 主库创建的密码
master_log_file='mysql-bin.000009', 在主库上执行show master status\G 获得
master_log_pos=831; 在主库上执行show master status\G 获得
#备库启动同步
start slave;
#查看slave状态 "\G"是格式化内容
show slave status\G;
13.备库查看同步状态(sql方式执行)
show slave status \G
如果(标识配置OK):Slave_IO_Running: Yes ,Slave_SQL_Running: Yes
14)验证
在主库上操作
create database test;
ues test;
create table ms_test1 (
id varchar(12) not null,
name varchar(50) null,
primary key (id)
);
#插入数据
INSERT INTO ms_test1 VALUES('1','11111');
在从库上操作
use test;
show tables;
select * from ms_test1;
主备配置完成!!!