MySQL主从复制小结mysql
两台服务器做此实验,信息以下:sql
IP 机器名称 操做系统版本 数据库版本数据库
192.168.101.81 my-master Centos7.5_64 mysql 5.7vim
192.168.101.82 my-slave Centos7.5_64 mysql 5.7安全
1、mysql的经典主从复制服务器
一、初始化环境(两台机器上都操做)网络
a)安装相关的环境包:yum –y install vim wget lrzsz ntpdate多线程
b)同步时间:ntpdate -u times.aliyun.com并发
c)上传mysql80-community-release-el7-1.noarch到服务器上ide
d) rpm -ivh mysql80-community-release-el7-1.noarch.rpm
e) vim /etc/yum.repos.d/mysql-community.repo
将mysql8.0的enable=1修改成enable=0;而后将将mysql5.7的enable=0修改成enable=1
f)安装数据库 yum clean all && yum makecache fast && yum -y install mysql mysql-devel mysql-server
g)systemctl start mysqld && systemctl enable mysqld
h)grep password /var/log/mysql.log中找到密码,而后用找到的密码登陆数据库: mysql –u root –p 回车后输入初始化安装mysql生成的密码
i)登陆后用alter user ‘root’@ ‘localhost’identified by ‘新密码’;来修改密码
g)用mysql_secure_installation命令根据提示对数据库作安全,一路回车
二、在主库my-master上操做以下
a)修改主机名:hostname my-master && echo ‘my-master’> /etc/hostname 退出后从新登陆就能够了
b)登陆数据库(mysql –u root –p新密码)后对从服务器同步用户受权: grant replication slave on *.* to ‘wangtao’@’192.168.101.82’identified by ‘Wangta0+007’;
c)编辑/etc/my.cnf文件在[mysqld]中加入如下内容
server-id=81
log-bin=mysql-bin
binlog-ignore-db=mysql
d) systemctl restart mysqld
e)登陆数据库(mysql –u root –p新密码)后用’show master status ;’查看信息
三、在主库my-slave上操做以下:
a)修改主机名:hostname my-slave && echo ‘my-slave’> /etc/hostname 退出后从新登陆就能够了
b)编辑/etc/my.cnf文件在[mysqld]中加入如下内容
server-id=82 必须为 1 到 232–1 之间的一个正整数值
read-only 只读设置
c) systemctl restart mysqld
d) 登陆数据库(mysql –u root –p新密码)设置同步
change master to master_host='192.168.101.81',master_user='wangtao' , master_password=' Wangta0+007',master_log_file='mysql-bin.000003',master_log_pos=106;
start slave;
e)查看同步状态
show slave status \G; 当Slave_IO_Running: Yes 与Slave_SQL_Running: Yes 说明同步成功
四、插入测试数据测试(略)
2、mysql的gtid主从复制
一、初始化环境(两台机器上都操做)
a)安装相关的环境包:yum –y install vim wget lrzsz ntpdate
b)同步时间:ntpdate -u times.aliyun.com
c)上传mysql80-community-release-el7-1.noarch到服务器上
d) rpm -ivh mysql80-community-release-el7-1.noarch.rpm
e) vim /etc/yum.repos.d/mysql-community.repo
将mysql8.0的enable=1修改成enable=0;而后将将mysql5.7的enable=0修改成enable=1
f)安装数据库 yum clean all && yum makecache fast && yum -y install mysql mysql-devel mysql-server
g)systemctl start mysqld && systemctl enable mysqld
h)grep password /var/log/mysql.log中找到密码,而后用找到的密码登陆数据库: mysql –u root –p 回车后输入初始化安装mysql生成的密码
i)登陆后用alter user ‘root’@ ‘localhost’identified by ‘新密码’;来修改密码
g)用mysql_secure_installation命令根据提示对数据库作安全,一路回车
二、在主库my-master上操做以下
a)修改主机名:hostname my-master && echo ‘my-master’> /etc/hostname 退出后从新登陆就能够了
b)登陆数据库(mysql –u root –p新密码)后对从服务器同步用户受权: grant replication slave on *.* to ‘wangtao’@’192.168.101.82’identified by ‘Wangta0+007’;
c)编辑/etc/my.cnf文件在[mysqld]中加入如下内容
server-id=81
gtid-mode=ON
enforce-gtid-consistency
log-bin=mysql-bin
log-slave-updates
binlog_ignore_db=mysql
d) systemctl restart mysqld
e)登陆数据库(mysql –u root –p新密码)后用’show master status ;’查看信息
三、在主库my-slave上操做以下:
a)修改主机名:hostname my-slave && echo ‘my-slave’> /etc/hostname 退出后从新登陆就能够了
b)编辑/etc/my.cnf文件在[mysqld]中加入如下内容
server-id=82
gtid-mode=ON
enforce-gtid-consistency
read-only 只读设置
log-slave-updates
c) systemctl restart mysqld
d) 登陆数据库(mysql –u root –p新密码)设置同步
change master to master_host='192.168.101.81',master_user='wangtao' , master_password=' Wangta0+007', master_auto_position=1;
start slave;
e)查看同步状态
show slave status \G; 当Slave_IO_Running: Yes 与Slave_SQL_Running: Yes 说明同步成功
3、GTID与经典主从的区别
1.不用手动定位pos和binlog的位置,添加参数master_auto_position=1便可
2.多线程并发复制,Slave-parallel-workers=0,1,2(禁用,单线程,两个线程)
master数据库有改动,好比DML,存入bin-log中,
备份到主数据库中,网络I/O才去master给slave去取数据
因此经典模式下通常手动设置给slave备份,由于必定要保证主被数据同样,自动容易出问题。
推荐使用mysql5.7
下篇博文引入mariadb gelare cluster同步,请你们多多指教!