mysql5.7主从环境搭建
环境准备 1.卸载原有的mariadb或mysql rpm -qa | grep -i mysql rpm -qa | grep -i mariadb
rpm -e mariadb-xxxx
#注:如上命令删除不成功,有别的软件依赖无法删除时,如下操作:
yum remove mariadb-xxxx
或
rpm -e --nodeps mariadb-xxx
-
关闭 seLinux 一、查看SELinux状态命令: 1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态 SELinux status: enabled 2、getenforce ##也可以用这个命令检查
二、关闭SELinux方法: 1、临时关闭(不用重启机器): 代码如下: setenforce 0 #设置SELinux 成为 permissive 模式 #setenforce 1 设置SELinux 成为 enforcing 模式
2、修改配置文件需要重启机器: 修改/etc/selinux/config 文件 将SELINUX=enforcing 改为 SELINUX=disabled 重启机器即可
-
下载 mysql 安装源 https://dev.mysql.com/downloads/repo/yum/ wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
yum install -y mysql80-community-release-el7-3.noarch.rpm
ls -la /etc/yum.repos.d/|grep mysql -rw-r--r--. 1 root root 2076 4月 24 2019 mysql-community.repo -rw-r--r--. 1 root root 2108 4月 24 2019 mysql-community-source.repo
<!-- 查看所有可用的安装软件列表 关闭其他的mysql软件 打开5.7 并安装mysql --> yum repolist yum repolist all |grep mysql yum -y install yum-utils yum-config-manager --disable mysql80-community yum-config-manager --enable mysql57-community yum install -y mysql-community-server mysql yum-config-manager --enable mysql57-community* yum install -y mysql-community-server mysql
-
启动MySQL 并初始化密码 [mysqld] datadir=/data/mysql/data #datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock #socket=/data/mysql/data/mysql.sock symbolic-links=0
log-error=/data/mysql/log/mysqld.log #log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
把数据目录修改为 mysql 用户 权限
ls -la /data/ total 28 d-wx--x--x 4 mysql mysql 29 Jul 15 07:10 mysql
systemctl daemon-reload systemctl start mysqld systemctl enable mysqld systemctl status mysqld systemctl restart mysqld systemctl stop mysqld
-
MySQL用户密码配置
mysql 第一次安装会初始化一个密码
grep 'password' /data/mysql/log/mysqld.log mysql -uroot -p'VNV&P,c3O?EQ' alter user 'root'@'localhost' identified by 'Hao.123456'; select version(); grant all privileges on . to root@'%' identified by 'Hao.123456' with grant option; flush privileges;
-
其他配置,用其他用户启动MySQL /usr/local/mysql/bin/mysqld --initialize --user=root --basedir=/usr/local/mysql --datadir=/data/gpmm/mysql/data /usr/local/mysql/bin/mysqld --daemonize --user=root --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data grep 'temporary password' /usr/local/mysql/logs/error.log grep 'password' /data/mysql/log/mysqld.log f9/g:BXn6KG mysql -uroot -p'f9/g:BXn6KG' alter user 'root'@'localhost' identified by '1qaz@WSX'; select version(); grant all privileges on . to root@'%' identified by '1qaz@WSX' with grant option; flush privileges; 修改服务的配置文件 cat /usr/lib/systemd/system/mysqld.service
mysql 主从复制(读写分离)设置
-
Mysql 读写分离主从复制模式概述
主(master)从(slave)复制,就是一台机器的mysql充当主服务器,其他充当从服务器。 更新操作(insert、update、delete)在主(master)服务器 读取在从服务器(select)
1.1 mysql 支持的复制类型
1. 基于语句复制,MySQL默认采用基于语句的复制,效率比较高。一旦发现没法精确复制时, 会自动选着基于行的复制。
在主服务器上执行的SQL语句,
在从服务器上执行同样的语句。
2. 基于行复制,把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 从mysql5.0开始支持
3. 混合类型复制,默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。
1.2 复制解决的问题
MySQL复制技术有以下一些特点:
数据分布 (Data distribution )
负载平衡(load balancing)
备份(Backups)
高可用性和容错行 High availability and failover
1.3 复制如何工作
1. master 将改变记录到二进制(binary log)中。
2. slave 将 master 的binary log events 拷贝到他的中继日志(relay log)
3. slave 重做中继日志中的事件,将改变反映他自己的数据。
-
复制配置
主(master)192.168.0.112 从(slave)192.168.0.113
2.1 master 建立账号赋权
在 Master 中创建账号 backup,并允许每个 slave 节点有 PEPLICATION SLAVE 权限。用户名的密码都会存储在文本文件 master.info 中
‘backup’@’%’ 表示用还可以从远程登录
CREATE USER ‘backup’@’%’ IDENTIFIED BY ‘password’;
授权
mysql > GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO backup@’%’ IDENTIFIED BY ‘1234’;
2.2 拷贝数据
新安装服务器不需要
2.3 配置 master 节点
查找 my.cnf 文件
find / -name 'my.cnf'
现在在 /etc/my.cnf
编辑
vi /etc/my.cnf
在文本后增加
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index
保存文件后
systemctl restart mysqld
进入mysql
show master status
2.4 配置 slave 节点
配置 my.cnf 文件如下:
og_bin= mysql-bin
server_id = 2
relay_log= mysql-relay-bin
log_slave_updates = 1
read_only= 1
2.5 启动 slave
接下来就是让slave连接master,并开始重做master二进制日志中的事件。你不应该用配置文件进行该操作,而应该使用CHANGE MASTER TO语句,该语句可以完全取代对配置文件的修改,而且它可以为slave指定不同的master,而不需要停止服务器。如下:
mysql> CHANGE MASTER TO MASTER_HOST='server1',
-> MASTER_USER='repl',
-> MASTER_PASSWORD='p4ssword',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=0;
测试
mysql> start slave;
显示,注意命令是大写的G,查看输出结果 在这里主要是看: Slave_IO_Running=Yes Slave_SQL_Running=Yes
msyql> show slave status \G
在 master 端输入 show processlist\G
msyql> show processlist \G
2.6 停止 slave
stop slave
只有再停止了 slave 后才能修改配置文件。
2.7 问题
:The slave I/O thread stops because master and slave have equal MySQL server UUIDs
最后检查发现他们的auto.cnf中的server-uuid是一样的。。。
[root@localhost ~]# vim /var/lib/mysql/auto.cnf
[auto]
server-uuid=4f37a731-9b79-11e8-8013-000c29f0700f
问题解决
停止从库的mysqld服务,删除他的auto.cnf文件,再启动数据库服务即可:
[root@localhost mysql]# systemctl stop mysqld.service
[root@localhost mysql]# mv /var/lib/mysql/auto.cnf /var/lib/mysql/auto.cnf.bak
[root@localhost mysql]# systemctl start mysqld.service
2.8 测试
posted on 2022-04-19 10:56 AnkangWenqiang 阅读(147) 评论(0) 编辑 收藏 举报