环境要求
- Centos 7 x64
- MySQL 5.7.24
1.安装数据库
- 安装前置操作
# 解压缩安装包
tar -xvf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar
# 查询MariaDB相关依赖
rpm -qa|grep mariadb
# 卸载MariaDB相关依赖
rpm -qa|grep mariadb
- 安装必要依赖
yum install libaio perl net-tools
- 关闭SELNIUX
# 关闭selinux,否则mysql无法启动
setenforce 0
# 查询selinux状态,状态为permissive即可
getenforce
- 开始安装mysql
安照如下顺序安装rpm包
rpm -ivh mysql-community-common-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.24-1.el7.x86_64.rpm
2.配置数据库
- 创建mysql数据存储目录
# 创建目录
mkdir /mysql
# 授权读写
chmod -R 777 /mysql
- 修改
/etc/my.cnf
数据库配置文件
# /etc/.my.cnf文件内容
[mysqld]
#datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
server-id=222
datadir = /mysql
#socket=/mysql/mysql.socket
binlog_format = ROW
expire_logs_days = 7
max_binlog_size = 1G
log_bin = /mysql/mysql-bin
log_bin_index = /mysql/mysql-bin.index
innodb_buffer_pool_size = 1G
max_connections = 50
sort_buffer_size=3M
read_buffer_size=8M
join_buffer_size=4M
- 启动数据库
service mysqld start
# 或者
systemctl start mysqld
# 查看数据库运行状态,状态为active即可
service mysqld status
- 修改root临时密码
# 从log日志文件中查找临时密码
grep password /var/log/mysqld.log
# 使用临时密码登录数据库
mysql -u root -p 临时密码
# 修改root密码
ALTER USER 'root'@'localhost' identified with mysql_native_password by '123456';
3.配置主从复制数据库
- 主库配置
修改/etc/my.cnf
配置文件添加如下配置
# 主库配置
event_scheduler=1 # 主库为1, 从库为0
read_only=0 # 主库为0, 从库为1
- 搭建主从复制关系
使用root登录mysql,并执行如下操作
# 使用root创建新用户repl,该用户用来负责主从一致
CREATE USER 'repl'@'%' IDENTIFIED with mysql_native_password BY '123456';
# 授予权限,该用户下所有库所有表,所有ip均可访问
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repl'@'%';
# 检查是否授予成功
select user,host from mysql.user\G;
# 查看主数据库状态
show master status;
- 从库配置
修改/etc/my.cnf
配置文件添加如下配置
# 从库/etc/my.cnf配置
[mysqld]
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
server-id=223
datadir = /mysql
#socket=/mysql/mysql.socket
binlog_format = ROW
expire_logs_days = 7
max_binlog_size = 1G
log_bin = /mysql/mysql-bin
log_bin_index = /mysql/mysql-bin.index
innodb_buffer_pool_size = 1G
max_connections=50
sort_buffer_size=3M
read_buffer_size=8M
join_buffer_size=4M
# ------------注意这两个配置,和主数据库不同-------
event_scheduler=0
read_only=1
登录从数据库,并设置从库同步
# 参数说明
# master_host 为 主库服务器ip
# master_port 为 主库 对外端口
# master_log_file和master_log_pos 为 show master status 命令中的结果
CHANGE master to master_host='172.31.46.59',master_port=3306,master_user='repl',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=1011;
- 开启从库同步
进入数据库并执行:
# 开启从库同步
start slave;
# 查看同步状态
show slave status\G;
查看show slave status\G;
命令的执行结果中的Slave_IO_Running
和Slave_SQL_Running
字段,两者结果为YES
表明同步成功
评论区