Linux下MySQL的安装
1.准备一台Linux服务器
云服务器或者虚拟机都可以;
Linux的版本为CentOS7;
2.下载Linux版MySQL安装包
MySQL :: Download MySQL Community Server (Archived Versions)
选择上图第一个BPM Bundle 下载
3.将MySQL安装包上传到Linux并解压。
使用FinalShell 连接到Linux服务器,上传安装包。
可以创建一个mysql目录,将文件解压到这个目录中
mkdir mysql
tar -xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar -C mysql
4.安装MySQL的安装包
安装之前我们需要检查一下CentOS 是否有一个mariadb 的库,使用管道筛选一下,如果有将其卸载。
#管道筛选
rpm -qa|grep mariadb
#忽略依赖卸载mariadb
rpm -e --nodeps mariadb-libs
开始安装MySQL文件(因为包与包之间有着依赖关系,必须按照以下顺序安装)
rpm -ivh mysql-community-common-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.28-1.el7.x86_64.rpm
#初始化
mysqld --initialize --console
chown -R mysql:mysql /var/lib/mysql/
初始化后,我们启动MySQL
systemctl start mysqld
在我们初始化的时候,程序会给我们设置一个临时的密码,我们需要查看临时密码才能进入MySQL
cat /var/log/mysqld.log|grep localhost
root@localhost:后的内容即为临时密码,使用临时密码登录MySQL后,可以将密码进行修改。
MySQL安装完成
MySQL的主从复制
主从复制是指将主数据库的DDL和DML操作通过二进制日志传到库服务器中,然后在从库上对这些日志重新执行,从而使得从库和主库的数据保持同步。
MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。
1.准备两台服务器
我将192.168.31.128这台服务器作为master,将192.168.31.130这台服务器作为slave 。
这两台服务器都需要安装MySQL,因为MySQL默认端口号为3306,所以我们需要开启防火墙中的3306端口号。测试阶段建议将防火墙关闭。
开放指定的3306端口号:
firewall-cmd --zone=public --add-port=3306/tcp-permanent
firewall-cmd -reload
关闭服务器防火墙:
systemctl stop firewalld
systemctl disable firewalld
检查两台服务器MySQL的状态,确保运行着。
2.主库配置
修改配置文件 /etc/my.cnf
#mysql服务ID,保证整个集群环境中唯一
server-id=1
#是否只读,1代表只读,0代表读写
read-only=0
#忽略的数值,指不需要同步的数据库
#binlog-ignore-db=mysql
#指定同步的数据库
#binlog-do-db=db01
配置完成后重启MySQL服务器
systemctl restart mysql
登录mysql,创建远程连接的账号,并授予主从复制权限
#创建mydata用户,并设置密码,该用户可在任意主机连接MySQL服务
create user 'mydata'@'%' identified with mysql_native_password by 'Root@123456';
#为'mydata'@'%'用户分配主从复制权限
grant replication slave on *.* to 'mydata'@'%';
通过show master status;指令,查看二进制日志坐标
file:从哪个日志文件开始推送日志文件(如图我当前是写到了binlog.00009这个文件了)
position:从哪个位置开始推送日志
3.从库配置
修改配置文件 /etc/my.cnf(使用vim编辑器)
#mysql服务ID,保证整个集群环境中唯一
server-id=2
#是否只读,1代表只读,0代表读写
read-only=1
登录mysql,设置主库配置
CHANGE REPLICATION SOURCE TO SOURCE_HOST='xxx.xxx',SOURCE_USER='xxx',SOURCE_PASSWORD='XXX',SOURCE_LOG_FILE='XXX',SOURCE_LOG_POS=XXX;
主库配置后,在从库启动同步操作
start replica;
#查看主从同步状态
show replica status;
由于表比较大,展示出的数据比较乱,我们可以使用show replica status\G;把每一列数据转换成每一行进行展示。
这时候我们可以看到主从复制的状态,关联的主库IP地址,端口号,用户名,中继日志位置等信息,我们需要重点关注Replica_IO_Running和Replica_SQL_Running这两个状态,如果这两个为yes则说明主从复制是正常的。
4.测试
在主库创建一个表并插入数据
在从库中查询数据,验证主从是否同步
从库同步获得相同的数据,主从复制完成。