CentOS7下MySQL5.7二进制主从(异步)安装部署

本文详细介绍在CentOS7.2环境下,如何安装MySQL5.7并进行主从配置,包括二进制安装包下载、解压、用户组与权限设置、初始化、服务脚本配置、环境变量设定、主从配置步骤等关键信息。

系统:CentOS7.2

安装目录:/usr/local/mysql-5.7.25

数据目录:/data1/mysql/data/3306

 

1.mysql二进制安装包下载

https://downloads.mysql.com/archives/get/file/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz

2.解压并将文件拷贝到/usr/local目录

>tar zxvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz

>mv mysql-5.7.25-linux-glibc2.12-x86_64 /usr/local/mysql-5.7.25

3.新建mysql用户组、mysql用户和权限

>groupadd mysql

>useradd -g mysql -r -s /sbin/nologin -M -d /data1/mysql/data/3306 mysql

>chown -R mysql:mysql /usr/local/mysql-5.7.25

>mkdir -p /data1/mysql/data/3306

>chmod -R 770 /data1/mysql/data/3306

>chown -R mysql:mysql /data1/mysql/data/3306

4.初始化mysqld

>cd /usr/local/mysql-5.7.25

>./bin/mysqld --user=mysql --datadir=/data1/mysql/data/3306 --basedir=/usr/local/mysql-5.7.25 --initialize

初始化完成会生成一个初始化密码,请保存好,后续使用

[Note] A temporary password is generated for root@localhost: AuutOr)Mq2sy

5.编辑my.cnf文件及将mysq服务脚本放到系统服务中,配置环境变量让系统可以直接使用mysql的相关命令

>cp support-files/mysql.server /etc/init.d/mysqld

>ldconfig

>vi /etc/profile 最下面添加一行

export PATH=/usr/local/mysql-5.7.25/bin:$PATH

>source /etc/profile

>chkconfig mysqld on

>vi /etc/my.cnf

[mysqld]

basedir=/usr/local/mysql-5.7.25

datadir=/data1/mysql/data/3306

port=3306

socket=/data1/mysql/data/3306/mysql.sock

max_connections=2000

character_set_server=utf8mb4

user=mysql

#MySQLid 后面从服务器需设置不同

server_id=2

启动mysql

>service mysqld start

6.修改密码

>mysql -uroot -h 127.0.0.1 -pAuutOr)Mq2sy #这里密码是上面初始化密码

mysql>set password='123456';

mysql>flush privileges;

设置远程可以访问mysql

mysql>update user set host='%' where user='root';

mysql>flush privileges;

 

以上配置主从都是一样,server_id不同即可

7.mysql主从配置(异步同步)

master配置

master上开启binlog日志

>vi /etc/my.cnf

[mysqld]

basedir=/usr/local/mysql-5.7.25

datadir=/data1/mysql/data/3306

port=3306

socket=/data1/mysql/data/3306/mysql.sock

max_connections=2000

character_set_server=utf8mb4

user=mysql

###

#MySQLid 后面从服务器需设置不同

server_id=1

#打开日志(主机需要打开),这个mysql-bin也可以自定义,这里也可以加上路径

log-bin=mysql-bin

#要给从机同步的库

#binlog-do-db=

#不给从机同步的库(多个写多行)

#binlog-ignore-db=

binlog-ignore-db=mysql

binlog-ignore-db=information_schema

binlog-ignore-db=performance_schema

binlog-ignore-db=sys

#自动清理 7 天前的log文件,可根据需要修改

expire_logs_days=7

 

重启数据库

>service mysqld restart

测试log_bin是否成功开启

>mysql -uroot -h 127.0.0.1 -p123456

mysql> show variables like '%log_bin%';

 

 

master的数据库中建立备份账号:backup为用户名,%表示任何远程地址,如下表示密码为123456的任何远程地址的backup都可以连接master主机

mysql> grant replication slave on *.* to 'backup'@'%' identified by '123456';

mysql> use mysql;

mysql> select user,authentication_string,host from user;

 

 

拷贝数据

重启mysql服务并设置读取锁,读取锁定目的是只能读取,不能更新,以便获得一个一致性的快照

mysql>show master status\G #

 

查看主服务器上当前的二进制日志名和偏移量值这里的file 和position 要和从上的一致

 

salve配置

>vi /etc/my.cnf

[mysqld]

basedir=/usr/local/mysql-5.7.25

datadir=/data1/mysql/data/3306

port=3306

socket=/data1/mysql/data/3306/mysql.sock

max_connections=2000

character_set_server=utf8mb4

user=mysql

###

#MySQLid 后面从服务器需设置不同

server_id=2

###

#加上以下参数可以避免更新不及时,slave重启后导致的主从复制出错。

read_only = 1

master_info_repository=table

relay_log_info_repository=table

#relay_log_recovery=1 #从机禁止写

#super_read_only=1 #从机禁止写

 

重启slave数据库

>service mysqld restart

 

登录slave数据库,并做如下设置

>mysql -uroot -h 127.0.0.1 -p123456

mysql>stop slave;

mysql>change master to

->master_host='192.168.1.2', #master的ip

->master_user='backup', #备份用户名

->master_password='123456', #密码

->master_log_file='mysql-bin.000001', #上面截图,且要与master的参数一致

->master_log_pos=9084967; #上面截图,且要与master的参数一致

mysql> start slave;

 

查看slave从机的状态 图中2个yes 代表设置成功

mysql> show slave status \G

 

 

关闭掉主数据库的读取锁定,并测试

mysql> unlock tables;

 

### CentOS 7MySQL 5.7 二进制版本升级步骤 #### 准备工作 确保当前环境已经安装有较低版本的 MySQL 或 MariaDB。停止正在运行的服务以防止数据损坏。 ```bash systemctl stop mysqld ``` 备份现有数据库文件夹以及配置文件,以防新版本不兼容旧版的数据结构造成丢失重要资料[^2]。 #### 下载并解压新的 MySQL 版本 前往官方下载页面获取适用于 Linux/Generic 的 tarball 文件,并将其放置到 `/usr/local` 目录下。这里假设已下载完成名为 `mysql-5.7.x-linux-glibc2.12-x86_64.tar.gz` 的压缩包: ```bash tar zxvf mysql-5.7.x-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ cd /usr/local/ ln -sfn ./mysql-5.7.x-linux-glibc2.12-x86_64/ ./mysql chown -R root:mysql . chmod -R 750 mysql* ``` 上述命令创建了一个软链接指向最新解压出来的目录,方便后续管理不同版本之间的切换操作;同时调整权限使得只有特定用户组可以访问这些资源[^3]。 #### 初始化数据库实例 如果这是首次设置,则需要初始化一个新的实例来准备必要的表空间和其他内部对象: ```bash ./mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/var/lib/mysql ``` 对于已有实例的情况,请跳过此步以免覆盖原有数据。 #### 更新系统路径变量与服务脚本 为了让 shell 能够识别新版可执行程序的位置,编辑 `.bashrc` 添加如下内容至末尾处: ```bash export PATH=$PATH:/usr/local/mysql/bin source ~/.bashrc ``` 接着复制随附的服务启动模板到相应位置以便通过 systemd 进行控制: ```bash cp support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld ``` #### 修改 my.cnf 配置文件 依据实际情况修改位于 `/etc/my.cnf` 中的各项参数设定,特别是 socket 和 datadir 字段要匹配实际部署情况下的值。 #### 升级数据库架构 (仅当存在先前版本时) 利用自带工具修复潜在差异问题,保证平稳过渡: ```sql mysql_upgrade -u root -p ``` 最后重启服务使更改生效: ```bash systemctl restart mysqld ss -ntlp | grep mysql ``` 确认监听端口正常开启即表示更新过程顺利完成。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值