Linux系统CentOS7.7安装MySQL及MySQL主从同步配置
MySQL安装
下载MySQL包
下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads.
检查是否存在已安装的MySQL或mariadb
查看是否存在mysql
rpm -qa|grep mysql
查看是否存在mariadb
rpm -qa|grep mariadb
如果存在则删除
删除对应的安装文件
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
解压文件
tar -zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
创建mysql用户组和用户并修改权限
groupadd mysql #创建工作组
useradd -r -g mysql mysql #建立用户帐号
mkdir -p /data/mysql #创建目录
chown mysql:mysql -R /data/mysql #赋予权限
移动并重命名
mv mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz /usr/local/mysql
主库配置my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
## 同一局域网内注意要唯一 建议内网IP
server-id=194
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
## 配置主从复制日志 mysql-bin 保留天数
expire_logs_days = 1
##跳过dns解析
skip-name-resolve
##添加链接数
max_connections=1000
#不区分大小写
lower_case_table_names = 1
#关闭 ONLY_FULL_GROUP_BY
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#开启慢查询日志
slow_query_log = 1
slow_query_log_file = /data/mysql/logs/mysql_slow.log
long_query_time=10
#时间改成中国时间
default-time-zone = '+8:00'
#编码
character_set_server=utf8mb4
#默认的timestamp
explicit_defaults_for_timestamp=true
#服务器发送和接受的最大包长度
max_allowed_packet = 800M
从库配置my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
## 同一局域网内注意要唯一
server-id=135
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
## 配置主从复制日志 mysql-bin 保留天数
expire_logs_days = 1
##跳过dns解析
skip-name-resolve
##添加链接数
max_connections=1000
#不区分大小写
lower_case_table_names = 1
#从库配置只读
read_only=1
#关闭 ONLY_FULL_GROUP_BY
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#启用relaylog的自动修复功能,避免由于网络之类的外因造成日志损坏,主从停止。
#自动清除没有用的relay_log 日志
relay_log_purge = 1
#当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。默认情况下该功能是关闭的,将relay_log_recovery的值设置为 1时,可在slave从库上开启该功能,建议开启。
relay_log_recovery = 1
#跳过所有错误
slave-skip-errors=1062,1032
#开启慢查询日志
slow_query_log = 1
slow_query_log_file = /data/mysql/logs/mysql_slow.log
long_query_time=10
#时间改成中国时间
default-time-zone = '+8:00'
#编码
character_set_server=utf8mb4
#默认的timestamp
explicit_defaults_for_timestamp=true
#服务器发送和接受的最大包长度
max_allowed_packet = 800M
初始化并查看密码
cd /usr/local/mysql/bin/
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
cat /data/mysql/mysql.err #密码在最后面
启动mysql,并更改密码
//先将mysql.server放置到/etc/init.d/mysql中
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
//启动MySQL服务
service mysql start
//查看是否启动成功
ps -ef | grep mysql
//进入bin目录
cd /usr/local/mysql/bin/
//登录
./mysql -u root -p
//使用之前查的密码
//修改密码
SET PASSWORD = PASSWORD('123456');
//允许远程访问
grant all privileges on *.* to root@'%' identified by '123456789' with grant option;
//刷新
flush privileges;
//退出重新登录
quit;
测试远程访问
本机使用对应的工具,进行连接测试
MySQL主从配置
创建从数据库访问主库账户
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
//授权
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
查看主机配置
show master status;
从库配置
MySQL从上配置主从连接信息
CHANGE MASTER TO
MASTER_HOST='172.17.14.194',
MASTER_PORT=3306,
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=1390;
开启slave的主从复制功能
start slave;
查看是否配置成功
show slave status \G;
slave_IO_Running
slave_SQL_Running
全部显示yes 则代表成功