Linux环境tar.gz安装部署MySQL及主从复制搭建

Linux环境tar.gz安装部署MySQL及主从复制搭建

  • Linux环境tar.gz安装部署MySQL及主从复制搭建
    • 单机部署
      • 1. 创建用户和组
      • 2. 解压安装包
      • 3. 创建数据目录和日志目录
      • 4. 配置参数
      • 5. 添加系统服务
      • 6. 修改目录及文件权限
      • 7. 添加全局环境变量
      • 8. 初始化MySQL
      • 9. 启动mysql服务
      • 10. 修改root用户密码
    • 主从配置
      • 1. 按上文单机部署说明,搭建两个MySQL数据库。
      • 2. 修改参数配置
      • 3. 对每台机配置二进制日志格式
      • 4. 主机中赋权并查看当前日志状态
      • 5. 从机配置同步信息
      • 6. 验证同步状态

Linux环境tar.gz安装部署MySQL及主从复制搭建

本文以CentOS 7安装MySQL 5.7为例,介绍在Linux操作系统下,使用tar.gz格式的安装包安装部署MySQL数据库的过程,包含单机部署方法和主从集群的搭建方法。


单机部署

以下是单机安装过程

1. 创建用户和组

[root@localhost] # groupadd mysql
[root@localhost] # useradd -g mysql mysql

2. 解压安装包

将MySQL主程序解压至mysql用户目录下,并重命名目录

[root@localhost] # tar -zxvf mysql-5.7.xxxxxxxxxx.tar.gz -C /home/mysql/
[root@localhost] # mv /home/mysql/mysql-5.7.xxxxxxxxxx mysql-5.7

3. 创建数据目录和日志目录

[root@localhost] # mkdir -p /home/mysql/datadir
[root@localhost] # mkdir -p /home/mysql/logs/mariadb

此处创建的目录将用于存放MySQL数据库的数据文件和二进制日志(binary log)。
为方便数据容量管理和数据迁移等,可使用LVM等工具为数据目录和日志目录建立专用的文件系统 。

4. 配置参数

  • 新建或修改/etc/my.cnf文件,如下编辑[mysqld]标签下的内容以修改服务端参数:
[mysqld]
server-id=1
socket=/home/mysql/mysql.sock
character-set-server=utf8
datadir=/home/mysql/data
log_bin=/home/mysql/logs/mysql-bin
expire_logs_days=10
lower_case_table_names=1
...

其中,character-set-server 指定创建新的schema时默认使用的字符集;
log_bin 参数表示开启二进制日志并指明二进制日志文件的位置和文件名;
expire_logs_days 参数表示过期天数;
lower_case_table_names=1 表示数据库中表名使用小写,即忽略表名的大小写。

  • 修改/etc/my.cnf文件,如下编辑[client]标签下的内容以修改本地客户端参数:
[client]
socket=/home/mysql/mysql.sock

更多可配置的参数可参阅MySQL参考手册

5. 添加系统服务

编辑安装目录下support-files/mysql.server

[root@localhost] # cd /home/mysql/mysql-5.7/
[root@localhost] # vi support-files/mysql.server

修改其中basedir和datadir项

basedir=/home/mysql/mysql-5.7
datadir=/home/mysql/data

将文件复制到/etc/init.d/

[root@localhost] # cp support-files/mysql.server /etc/init.d/mysql

6. 修改目录及文件权限

# chown -R mysql:mysql /home/mysql
# chown mysql:mysql /etc/my.cnf
# chown mysql:mysql /etc/init.d/mysql

修改以上目录和文件属主为mysql:mysql,使MySQL服务能使用操作系统的mysql用户启动。

7. 添加全局环境变量

编辑/etc/profile,在文件末尾添加如下内容:

MYSQL_HOME=/home/mysql/mysql-5.7
export PATH=$PATH:$MYSQL_HOME/bin

使环境变量生效

[root@localhost] # source /etc/profile

8. 初始化MySQL

由root切换至mysql用户使用mysql用户初始化MySQL系统,执行mysqld --initialize初始化数据库

[root@localhost] # su - mysql
[mysql@localhost] $ mysqld --initialize --user=mysql --basedir=/home/mysql/mysql-5.7 --datadir=/home/mysql/data

完成操作后,MySQL会返回一个root用户的随机密码,把它记住,稍后用于修改密码。
在这里插入图片描述

9. 启动mysql服务

[mysql@localhostt] $ service mysql start

10. 修改root用户密码

[mysql@localhostt] $ mysqladmin -u root -p password PASSWORD

命令中 PASSWORD 为用户设置的新密码。
执行命令,根据提示输入初始化时生成的随机密码后,root用户密码修改完成。
注意: 执行该命令前应先确保mysql服务已成功启动。

至此,MySQL单机部署完成。


主从配置

以下开始主从配置

1. 按上文单机部署说明,搭建两个MySQL数据库。

2. 修改参数配置

在从机修改/etc/my.cnf

[mysql@localhost] $ vi /etc/my.cnf
[mysqld]
server-id=2

集群中每个MySQL实例都应设置不同 server-id
若主机 server-id 设置为1,从机中应将其设置为2(不与主机即可)。
若有多个从机,应将 server-id 设置为3,4,5… …

3. 对每台机配置二进制日志格式

[mysql@localhost] $ vi /etc/my.cnf
[mysqld]
binlog_format=mixed

二进制日志的格式有三种:statementrowmixed

三种二进制日志格式的区别可以简单描述为:
statement格式的日志以语句为单位记录,它占用空间小但不能记录如load等一类操作;
row格式以数据表的值为单位记录,同步时锁表锁记录较少,但占用空间大;
mixed将结合两者的优缺点做了折中方案,即以较小的空间代价记录所有操作。

三者的具体的区别可参阅MySQL参考手册

4. 主机中赋权并查看当前日志状态

mysql> grant replication slave on *.* to 'slave'@'IpAddress' identified by 'Password';
mysql> show master status\G;

在这里插入图片描述
第一条语句是指在数据库中创建slave用户并赋予其复制的权限。
其中,IpAddress 表示从机的IP地址,Password 表示从机登录到主机时使用的密码。
若多个从机在同一网段如 192.168.101.0,那么 IpAddress处可写为 192.168.101.%

注意: 该步骤在主机上操作

5. 从机配置同步信息

根据主机日志状态,在从机配置同步信息

mysql> stop slave;
mysql> change master to
     > master_host='IpAddress',
     > master_user='slave',
     > master_password='Password',
     > master_log_file='mysql.000009',
     > master_log_pos=922;
mysql> start slave;

同样,IpAddress 表示主机的IP地址,Password 表示登录到主机时使用的密码。
master_log_file 指主机当前的日志文件;
master_log_pos 指当前日志文件的位置;
所以两个字段的值应置为步骤4中查询到的 FilePosition 字段的值。

注意: 该步骤在从机上操作

6. 验证同步状态

mysql> show slave status\G;
	……
	Slave_IO_Running: Yes
	Slave_SQL_Running: Yes
	……

执行show slave status命令,应看到 Slave_IO_RunningSlave_SQL_Running 两个字段值为 Yes

至此,MySQL主从复制配置完成。

你可能感兴趣的:(MySQL,MySQL,主从复制,Linux,tar.gz,数据库)