前面我讲解了 Redis 在分布式场景的下的相关应用,接着我们来看看 MySQL 数据库在分布式场景下的应用。
方案一:MariaDB
(CentOS8 自带 mariadb 下载源)
PS: 如果当前系统中已经安装有 MySQL 数据库,安装将失败。mariadb 与 MySQL 数据库冲突.
参考文章:Linux之部署Web项目到云服务器
方案二:MySQL
①下载并安装MySQL官方的 Yum Repository
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
②可以直接yum安装MySQL源
yum -y install mysql57-community-release-el7-10.noarch.rpm
③开始安装MySQL服务器。
yum -y install mysql-community-server# 安装报错:提示公钥尚未安装,执行下面指令安装密钥后,再次安装 mysql
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
这步可能会花些时间,安装完成后就会覆盖掉之前的 mariadb。
④查看是否安装成功
yum list installed mysql-*
⑤启动 MySQL
# 启动msql服务
systemctl start mysqld
# 开机自启mysql服务
systemctl enable mysqld
# 查看mysql服务状态
systemctl status mysqld
⑥查阅临时密码
# 查看文件内容
cat /var/log/mysqld.log# 查看文件内容中包含password的行信息
cat /var/log/mysqld.log | grep password
⑦登录mysql
mysql -uroot -p# 设置密码长度最低位数
set global validate_password_length=6;
# 设置密码安全等级低,便于密码可以修改成123456
set global validate_password_policy=LOW;
# 设置密码
set password = password('123456');
⑧开启访问权限
# *.*表示允许访问的数据库名称.表名称
# root代表远程登录使用的用户名,可以自定义
# %代表允许任意ip登录,如果你想指定特定的IP,可以把%替换掉就可以了
# password代表远程登录时使用的密码,可以自定义
grant all privileges on *.* to 'root' @'%' identified by '123456';
# 让权限立即生效
flush privileges;
回到目录…
当我们使用 MySQL 的时候,也可以采取主从复制的策略,它的实现思路基本和 Redis 相似:
这里我们就使用两台主机来搭建一主一从的环境,首先确保两台服务器都安装了 MySQL 数据库并且都已经正常运行了:
修改两个mysql服务器的配置文件:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
先给两个服务器开启一下外网访问,初始化的时候设置过就可以不用再设置了。
# bind-address = 127.0.0.1 这里注释掉就行
从机:将 server-id
配置为其它值(默认是1)所有 Mysql 主从实例的 id 必须唯一,不能冲突,否则启动失败
# 这里需要将server-id配置为其他的值(默认是1)所有Mysql主从实例的id必须唯一,不能打架,不然一会开启会失败
server-id = 2
最后重启两个服务器:
sudo systemctl restart mysql.service
我们在主服务器需要创建一个账号,一会方便从库进行访问的用户:
CREATE USER test identified with mysql_native_password by '123456';
再来配置主库,主库只需要为我们刚刚创建好的用户分配一个主从复制的权限即可:
grant replication slave on *.* to test;
flush privileges;
然后我们可以输入命令来查看主库的相关情况:
show master status;
从机连接主机的信息:注意后面的 logfile
和 pos
就是我们上面从主库中显示的信息。
change replication source to SOURCE_HOST='192.168.0.8',SOURCE_USER='test',SOURCE_PASSWORD='123456',SOURCE_LOG_FILE='binlog.000004',SOURCE_LOG_POS=591;
开始连接,接着输入:
start replica;
现在我们的从机就正式启动了,现在我们输入:
show replica status\G;
来查看当前从机状态,可以看到:
最关键的是下面的 Replica_IO_Running
和 Replica_SQL_Running
必须同时为 Yes 才可以,实际上从库会创建两个线程,一个线程负责与主库进行通信,获取二进制日志,暂时存放到一个中间表(Relay_Log)中,而另一个线程则是将中间表保存的二进制日志的信息进行执行,然后插入到从库中。
建库:
建表:
插入数据:
这样,我们的MySQL主从就搭建完成了,那么如果主机此时挂了会怎么样?
stop replica;
,再根据主库的情况重新 change replication source to ...
回到目录…
总结:
提示:这里对文章进行总结:
本文是对MySQL的学习,先介绍了2种在linux环境下安装mysql的方案,又基于两台云服务器实现了MySQL一主一从的主从复制结构。之后的学习内容将持续更新!!!
下一篇:古典密码学