1 准备
准备两台主机和安装包,具体版本如下:
名称 | 版本 |
操作系统 | CentOS 7.5 64bit |
mysql安装包 | mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz |
2 Master/Slave部署
主从服务器均需要进行本mysql安装步骤。
默认部署安装包是在/mnt路径下
2.1 环境准备
2.1.1 解压安装包
# 解压mysql安装包
tar -zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
# 修改解压后文件夹名称
mv mysql-5.7.30-linux-glibc2.12-x86_64 mysql
2.1.2 创建mysql用户
#创建用户组
groupadd mysql
#创建mysql账户
useradd -r -g mysql mysql
2.1.3 创建数据目录
#创建目录
mkdir -p /mnt/mysql/data
#赋予权限
chown mysql:mysql -R /mnt/mysql/data
2.1.4 配置my.cnf
[mysqld]
bind-address=0.0.0.0
port=6606
user=mysql
basedir=/mnt/mysql
datadir=/mnt/mysql/data
socket=/tmp/mysql.sock
log-error=/mnt/mysql/data/mysql.err
pid-file=/mnt/mysql/data/mysql.pid
#character config
character_set_server=utf8
symbolic-links=0
explicit_defaults_for_timestamp=true
max_connections=1000
[client]
port=6606
socket=/tmp/mysql.sock
2.2 数据库初始化
2.2.1 初始化
#进入bin目录
cd /mnt/mysql/bin
#执行初始化命令
./mysqld --defaults-file=/etc/my.cnf --basedir=/mnt/mysql/ --datadir=/mnt/mysql/data/ --user=mysql --initialize
2.2.2 设置开机自启动
#先将mysql.server放置到/etc/init.d/mysql中
cp /mnt/mysql/support-files/mysql.server /etc/init.d/mysql
#赋予可执行权限
chmod +x /etc/init.d/mysql
#添加为服务:
chkconfig --add mysql
#查看服务列表
chkconfig --list
看到3、4、5状态为开或者为 on 则表示成功。
如果是 关或者 off 则执行一下:chkconfig --level 345 mysql on
2.2.3 修改密码和登录权限
#启动mysql
service mysql start
#启动成功查看密码
cat /mnt/mysql/data/mysql.err
#连接数据库
./mysql -uroot -p
#输入密码后,进入mysql命令行。修改密码为root
alter user 'root'@'localhost' identified by 'root';
#修改登录权限
grant all privileges on *.* to root@"%" identified by "root";
#刷新权限
flush privileges;
3 配置主从
3.1 Master
3.1.1 修改主服务器my.cnf
修改/etc/my.cnf,在[mysqld]模块下添加以下内容
#主从同步配置
##启用二进制日志
log-bin=mysql-bin
##本机数据库 ID 标示,主从配置中ID要唯一
server-id=1
##日志保存时间单位天
expire_logs_days = 7
##可以被从服务器复制的库, 二进制需要同步的数据库名
binlog-do-db=hgxt
##不可以被从服务器复制的库
binlog-ignore-db=mysql
binlog-ignore-db=sys
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schem
### 主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed
### 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
### 控制binlog的写入频率。每执行多少次事务写入一次
### 这个参数性能消耗很大,但可减小MySQL崩溃造成的损失,为0表示不控制
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
#修改完配置,重启服务
service mysql restart
3.1.2 创建同步用户
#连接mysql
./mysql -uroot -proot
#在mysql命令行输入以下指令
#创建同步用户slave
CREATE USER 'slave'@'%' IDENTIFIED BY 'slave';
#给同步账户赋权
grant replication slave on *.* to 'slave'@'%' identified by 'slave';
#刷新权限
flush privileges;
3.2 Slave
3.2.1 修改从服务器my.cnf
修改/etc/my.cnf,在[mysqld]模块下添加以下内容
#主从同步配置
###本机数据库 ID 标示,主从配置中ID要唯一
server-id=2
#修改完配置,重启服务
service mysql restart
3.1.2 执行主从初始化
#连接mysql
./mysql -uroot -proot
#在mysql命令行输入指令,执行初始化
change master to master_host='10.7.9.5', master_user='slave', master_password='slave', master_port=6606;
#查看状态
show slave status\G;
可以看到红框出现了两个 YES,则主从配置成功
4 数据库数据导入
在主库进行数据库创建,执行建表语句 。从库会自动同步该库,表结构以及数据。