Mysql主从复制
数据备份
数据备份是一种古老而有效的数据保护手段,早期的数据备份手段主要是数据冷备,即定期将数据复制到某种存储介质(磁带,光盘…)上并物理存档保管,如果系统存储损坏,那么就从冷备的存储中恢复数据。冷备的优点是简单和廉价,成本和技术难度都较低,缺点是不能保证数据最终一致
由于数据是定期复制,因此备份设备中的数据比系统中的数据陈旧,如果系统数据丢失,那么从上个备份点开始后更新的数据就会永久丢失,不能从备份中恢复,同时也不能保证数据的可用性,从冷备存储中恢数据需要较长的时间,而这段时间无法访问数据,系统也不可用。
1.前期准备
为防止干扰,准备两台全新快照并导入,修改网络配置,配置网络yum源
server1: 172.25.66.1 主机
server2: 172.25.66.2 备机
2.Mysql的主从复制
在server1和server2::
(1)解压压缩包
tar xf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar
(2)安装软件及其依赖库
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
(3)修改配置文件
vim /etc/my.cnf
负责在主、从服务器传输各种修改动作的媒介是主服务器的二进制变更日志,这个日志记载着需要传输给从服务器的各种修改动作。因此,主服务器必须激活二进制日志功能。从服务器必须具备足以让它连接主服务器并请求主服务器把二进制变更日志传输给它的权限.
log-bin=mysql-bin ##文档最后加,二进制日志复制,id号来区分主机
server-id=1
(4)开启mysql服务
systemctl start mysqld
(5)查看生成的临时密码
cat /var/log/mysqld.log | grep password
(6)数据库安全初始化
mysql_secure_installation
(7)尝试登陆并查看数据库
mysql -uroot -pLQHlqh123+
密码要求有大小写,数字,特殊字符,其他全选y(回车即可)
在server1:
创建并授权用来做复制的用户
在Master的数据库中建立一个备份帐户:每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE权限。用户名的密码都会存储在文本文件master.info中.
mysql> grant replication slave on *.* to repl@'172.25.66.%' identified by 'LQHlqh123+'; #授权同网段用户可以作为SLAVE
mysql> show plugins; ##查看插件,因为有密码插件,所以密码必须设置为复杂的
mysql> show master status; ##查看master状态
show databases;
CREATE USER 'repl'@'172.25.66.%' IDENTIFIED BY 'LQHlqh123+';创建用户repl,可以使用此用户远程登录数据库
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.25.66.%';授权为可以复制master节点数据的slave节点
flush privileges;刷新
show master status;查看master节点的状态
在server2:
(1)尝试连接master的数据库,测试repl帐号
mysql -h 172.25.66.1 -urepl -pWestos+68
此时可以登录,但是查看不到任何信息,因为没有权限
(2)登陆数据库配置master信息
mysql> change master to master_host='172.25.66.1', master_user='repl', master_password='LQHlqh123+', master_log_file='mysql-bin.000002',master_log_pos=1004; #MASTER_LOG_POS 它是日志的开始位置
#其中master_log_file和maMASTER_LOG_POS的值为0,因为它是日志的开始位置ster_log_pos写在server1上执行show master status看到的信息
mysql> start slave; #开启复制
mysql> show slave status\G ##查看主从复制状态
Slave_IO_Running: Yes
Slave_SQL_Running: Yes ##这两个参数是Yes,表示成功
3.测试
在server1:
创建新的数据库,创建新数据测试主从同步是否生效
mysql> create database westos; ##在server2上发现也能看到westos库
mysql> use westos;
mysql> create table usertb (
-> username varchar(10) not null,
-> password varchar(15) not null); ##建表
mysql> desc usertb; ##查看表信息
mysql> insert into usertb values ('user1','123'); ##插入数据
mysql> select * from usertb; ##查看
在server2:
登陆数据库并查看是否有新建的数据表
mysql -uroot -pLQHlqh123+
mysql> show databases; #查看库
mysql> use westos; #进入库
mysql> select * from usertab; #刷新并查看表
在server1继续插入新的数据
mysql> insert into usertb values ('user2','456'); ##插入数据
在server2可以看到数据更新
mysql> select * from usertab; #刷新并查看表
说明主从复制配置成功