Mysql主从配置环境搭建
一、安装环境
Linux需要cetos7,使用mysql-5.7.35-1.el7.x86_64.rpm-bundle包
检查系统是否存在旧版的MySQL
rpm -qa|grep -i mysql
如有依次卸载
rpm -e -nodeps 包名 #如有提示错误可使用以下方法卸载
rpm -ev 包名 --nodeps
Rpm -e --noscripts 包名
二、上传解压
上传mysql-5.7.35-1.el7.x86_64.rpm-bundle文件到/app/mysql文件夹下
解压mysql-5.7.35-1.el7.x86_64.rpm-bundle文件
tar -xvf mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar
三、安装
rpm -ivh mysql-community-common-5.7.35-1.el7.x86_64.rpm
安装如遇到报错,卸载mariadb
rpm -qa|grep mariadb
再次安装
安装失败
多了mariadb-libs-1:5.5.56-2.el7.x86_64这个系统自带依赖卸载
rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps
继续安装
安装成功
rpm -ivh mysql-community-libs-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.35-1.el7.x86_64.rpm
安装失败缺少net-tools依赖
下载安装net-tools
yum install net-tools.x86_64
继续安装
编辑配置文件
vim /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysql]
[mysqld]
#设置端口
port = 3306
#数据存储路径
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#错误日志路径
log-error=/var/log/mysqld.log
#日志路径
pid-file=/var/run/mysqld/mysqld.pid
disable-partition-engine-check=1
#只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve = 1
##数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server=utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server=utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
#最大连接数
max_connections=400
##最大错误连接数
max_connect_errors=1000
#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet=128M
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout=1800
wait_timeout=1800
#mysql binlog日志文件保存的过期时间,过期后自动删除
expire_logs_days=5
四、启动mysql
systemctl start mysqld
Mysql5.7之后初始密码不能为空,需通过命令查询
grep ‘temporary password’ /var/log/mysqld.log
登录mysql
mysql -p
输入密码登录
因为使用初始密码登录,不能执行任何操作,登录修改密码
SET PASSWORD =PASSWORD(‘Star*2018#’);#密码自定义
退出重新登录可正常使用
设置开机自启动
systemctl enable mysqld.service
五、添加远程访问权限(navicat可登录)
选择mysql库
use mysql;
更新用户表
update user set host’%’ where user=‘root’;
刷新表
flush privileges;
六、主从环境搭建
一、准备工作:
1.主从数据库版本最好一致
2.主从数据库内数据保持一致
主数据库:27.196.222.163 /linux
从数据库:27.196.222.169 /linux
二、主数据库master修改:
1.修改mysql配置
找到主数据库的配置文件my.cnf(或者my.ini),我的在/etc/mysql/my.cnf,在[mysqld]部分插入如下两行:
[mysqld]
log-bin=mysql-bin #开启二进制日志
server-id=1 #设置server-id
2.重启mysql,创建用于同步的用户账号
打开mysql会话shell>mysql -p
创建用户并授权:用户:rel1密码:slavepass
mysql> CREATE USER 'server'@'27.196.222.169' IDENTIFIED BY 'Star*2018#';#创建用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'server'@'27.196.222.169';#分配权限
mysql>flush privileges; #刷新权限
3.查看master状态,记录二进制文件名(mysql-bin.000001)和位置(759):
三、从服务器slave修改:
1.修改mysql配置
同样找到my.cnf配置文件,添加server-id
[mysqld]
server-id=2 #设置server-id,必须唯一
2.重启mysql,打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):
mysql> CHANGE MASTER TO
-> MASTER_HOST='27.196.222.163',
-> MASTER_USER='rep1',
-> MASTER_PASSWORD='slavepass',
-> MASTER_LOG_FILE='mysql-bin.000003',
-> MASTER_LOG_POS=73;
3.启动slave同步进程:
mysql>start slave;
4. 查看slave状态:show slave status\G;
当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了。接下来就可以进行一些验证了,比如在主库master创建数据库test,可以看到server也创建了test库
还可以关闭slave(mysql>stop slave;),然后再修改master,看slave是否也相应修改(停止slave后,master的修改不会同步到slave),就可以完成主从复制功能的验证了。