Mysql主从部署

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 数据库数据导入

在主库进行数据库创建,执行建表语句 。从库会自动同步该库,表结构以及数据。


版权声明:本文为king13127原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。