centos7安装mysql和主从同步原理

环境说明

笔者使用的使用vmware虚拟机,在虚拟机安装好mysql后,再克隆一份镜像作为mysql的slave,完成主从复制配置。

1.下载mysql的安装包

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

yum -y localinstall mysql57-community-release-el7-11.noarch.rpm 

2.yum安装mysql,这里可能需要点时间

yum -y install mysql-community-server

等待一小会时间,安装完毕
在这里插入图片描述

3.启动mysql

systemctl start mysqld
#设置mysql为开机自启动
systemctl enable mysqld

4.登录mysql,修改密码

1.mysql安装完成之后,默认会在/var/log/mysqld.log文件中生成了一个root的临时密码。

vim /var/log/mysqld.log

在这里插入图片描述
2.复制该密码,然后登录mysql,并修改初始密码

mysql -u root -p
# 修改密码
mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

如果出现提示密码强度太弱
在这里插入图片描述
可以添加以下修改,降低密码强度

mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;

再次修改密码即可

mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

以下是各个密码参数的含义

参数作用
validate_password_policy密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG
validate_password_mixed_case_count密码中大小字母的长度
validate_password_number_count密码中数据的长度
validate_password_special_char_count密码中特殊字符的长度
validate_password_length密码长度参数默认为8,它有最小值的限制,要大于等于number_count的值

3.开启mysql的远程登录

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)

5.开放防火墙的3306端口

如果服务器安装有防火墙,需要开放3306端口给mysql,如没有安装防火墙则忽略此步。

vim /etc/sysconfig/iptables

添加代码:

-A INPUT -p tcp --dport 3306 -j ACCEPT

在这里插入图片描述

# 重启防火墙
service iptables restart

6.设置mysql编码为utf-8

vim /etc/my.cnf

添加以下代码:

character_set_server=utf8
init_connect='SET NAMES utf8'

在这里插入图片描述

# 重启mysql
 systemctl restart mysqld

7.本地远程连接

在这里插入图片描述

8.主从复制配置,配置master

1.克隆镜像,选择一个为master一个为slave
虚拟机克隆镜像教程
2.配置master
修改master的配置文件

vim /etc/my.cnf

往my.cnf上添加如下代码

[mysqld]
log_bin=mysql-bin //启用二进制日志
server-id=10//服务器唯一ID必须要与从库不同,默认是1,一般取IP最后一段

3.创建授权用户
登录master的mysql命令行,mysql -u root -p 密码 ,创建一个用于从服务器复制的用户。

mysql>GRANT REPLICATION SLAVE ON *.* to 'root'@'%' identified by '123456'; 

代码含义:"."表示对所有库的所有操作,“%”表示所有客户端都可能连,也可用具体客户端IP代替,如你的本机ip

4.master的mysql状态信息
查看命令

mysql>show master status;

在这里插入图片描述
代码含义:file的mysql-bin.000001 是用于主从复制的文件名,
position的437是日志文件内的最新位置,这两个值待会在slave中有用。

9 主从复制配置,配置slave

注意直接克隆的虚拟机会导致每个数据库的 uuid 相同,需要修改为不同的 uuid,
可以参考我的这篇文章 https://blog.csdn.net/weixin_39025362/article/details/106666377

1.修改slave配置

vim /etc/my.cnf

添加如下代码:

[mysqld]
log_bin=mysql-bin 
server-id=11  //slave的server-id必须与master的不同

2.将slave指向master
登录从库的mysql,mysql -u root -p 密码

mysql>change master to master_host='master的ip',master_user='root',master_password='123456',
master_log_file='mysql-bin.000005',master_log_pos=154;
# 启动slave
mysql>start slave;

# 查看slave状态
mysql> show slave status\G;

在这里插入图片描述

10 主从同步原理:

  • 需要看的状态有两个,IO线程状态的 Slave_IO_Running和SQL线程状态的 Slave_SQL_Running,这两个的状态必须为Yes,否则就是配置失败。
  • 如果SQL线程没有正常工作,也就是Slave_SQL_Running: No。通常是master和slave的数据库不一致,需要手动的将master上mysql的最新记录都复制到slave上的mysql了。
  • 从库同步主库数据的方式是Master把它的binlog日志传递给slaves来达到master-slave数据一致的目的,binlog日志记录了Master所有的 DDL 和 DML 语句(除了数据查询语句select、show等),还包含语句所执行的消耗的时间,常用数据复制和恢复。

测试
当IO线程状态的 Slave_IO_Running和SQL线程状态的 Slave_SQL_Running,都为Yes时,
可以在master中进行插入、修改、删除数据等操作,刷新slave后查看数据变化。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高并发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值