侧边栏壁纸
博主头像
乌拉队长博主等级

你只管努力,其余的交给命运

  • 累计撰写 129 篇文章
  • 累计创建 34 个标签
  • 累计收到 34 条评论

目 录CONTENT

文章目录

MySQL 5.7主从复制数据库配置

乌拉队长
2023-02-02 / 0 评论 / 0 点赞 / 40 阅读 / 882 字

环境要求

  • 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_RunningSlave_SQL_Running字段,两者结果为YES表明同步成功

0

评论区