负责在主、从服务器传输各种修改动作的媒介是主服务器的二进制变更日志,这个日志记载着需要传输给从服务器的各种修改动作。因此,主服务器必须激活二进制日志功能。从服务器必须具备足以让它连接主服务器并请求主服务器把二进制变更日志传输给它的权限。
主库:
tar xf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar ##下载mysql包
yum install -y mysql-community-client-5.7.24-1.el7.x86_64.rpm mysql-community
-common-5.7.24-1.el7.x86_64.rpm mysql-community-libs-5.7.24-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm mysql-community-
server-5.7.24-1.el7.x86_64.rpm ##安装mysql
vim /etc/my.cnf ##编辑配置文件
log-bin=mysql-bin ##文档最后加,二进制日志复制
server-id=1 ##id号来区分主机
systemctl start mysqld ##开启服务生成临时密钥
cat /var/log/mysqld.log | grep password ##通过日志查看临时密钥
mysql -uroot -p'N7Nn<KkJsa!a' ##登陆数据库
mysql> show databases; ##显示数据库
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
##现在登陆密码不安全,必须初始化后才能查看数据库中数据
mysql_secure_installation ##安全初始化
mysql -uroot -pWestos+016 ##数据库登陆
grant replication slave on *.* to repl@'172.25.16.%' identified by 'Westos+016';
##设置rhel用户复制主库所有数据
show master status; ##查看master服务状态
create database west; ##新建数据库westos
从库:
tar xf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar ##下载mysql包
yum install -y mysql-community-client-5.7.24-1.el7.x86_64.rpm mysql-community
-common-5.7.24-1.el7.x86_64.rpm mysql-community-libs-5.7.24-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm mysql-community-
server-5.7.24-1.el7.x86_64.rpm ##安装mysql
vim /etc/my.cnf ##编辑配置文件
server-id=1 ##id号证明为从机
systemctl start mysqld ##开启服务生成临时密钥
cat /var/log/mysqld.log | grep password ##通过日志查看临时密钥mysql_secure_installation ##安全初始化
mysql -uroot -pWestos+016 ##数据库登陆
change master to master_host='172.25.16.1',master_user='repl',master_password
='Westos+016',master_log_file='binlog.000002',master_log_pos=856; ##指定主库,并且确定其二进制文件开始位置。
start slave; ##打开从库服务
show databases; ##查看是否有新建数据库
结果显示:
对主从复制的优化(gtid):由于主从复制过程中,需要使用者,确定复制的二进制日志,以及复制数据的位置。但是这就需要在主库上不停查看,这就有些麻烦,所以就提出了gtid模式。
主机配置(在主从复制基础上):
vim /etc/my.cnf ##在文件最后添加
gtid_mode=ON
enforce-gtid-consistency=true
systemctl restart mysqld ##开启mysql服务
mysql -uroot -pWestos+016 ##登陆数据库
use westos; ##进入westos数据库
create table usertb (username varchar(10) primary key,passwd varchar(15) not null); ##新建表
insert into usertb values ('user1','111111');##插入数据
select * from usertb; ##查看表内所有数据
vim /etc/my.cnf ##在文件最后添加
gtid_mode=ON
enforce-gtid-consistency=true
systemctl restart mysqld ##重启服务
mysql -uroot -pWestos+016 ##进入数据库
mysql> change master to ##指定主库ip
-> master_host = '172.25.16.1',
-> master_user='repl',
-> master_password='Westos+016',
-> master_auto_position=1;
start slave; ##开启服务
show slave status\G ##查看服务状态
use westos; ##进入数据库westos
select * from usertb; ##查看表中所有数据
实验效果: