linux下MySQL数据库主从复制的搭建

linux下MySQL数据库主从复制的搭建

linux系统为CentOS_7 MySQL版本为mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz(glibc安装)
至少需要两台服务器,主服务器(master)和从服务器(slave)
本测试是在虚拟中进行,真实环境可自行选择(以下搭建都是在测试环境中进行)
master IP:18.18.18.31
slave IP:18.18.18.32

环境搭建
首先root账号登录关闭防火墙,selinux。
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# vim /etc/selinux/config
打开SELINUX配置文件设置SELINUX=disabled 状态

安装ntpdate时间同步(需挂载本地镜像文件并配置本地yum源)
[root@localhost ~]# mount /dev/sr0 /mnt 挂载镜像文件
[root@localhost ~]# yum install -y ntpdate yum安装时间同步
[root@localhost ~]# ntpdate cn.ntp.org.cn 设置时间同步

设置主从服务器名称
[root@localhost ~]# hostnamectl set-hostname MASTER.hhb.cn 主机设置
[root@localhost ~]# hostnamectl set-hostname SLAVE01.hhb.cn 丛机设置

并在hosts文件中绑定IP
[root@master ~]# vim /etc/hosts
18.18.18.31 MASTER.hhb.cn MASTER
18.18.18.32 SLAVER01.hhb.cn SLAVER01

—————————MySQL的安装————————————————
首先利用工具上传文件到linux系统目录下(本次上传位置为root目录下)
[root@master/slave01 ~]# tar xf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz 执行解压指令
[root@master/slave01 ~]# mkdir /usr/local/mysql 主从服务器新建mysql目录
[root@master/slave01 ~]# mv mysql-5.6.35-linux-glibc2.5-x86_64/* /usr/local/mysql/ 主从服务器剪切软件到安装目录
[root@master/slave01 ~]# useradd -r -s /sbin/nologin mysql 主从服务器新建mysql用户
[root@master/slave01 ~]# chown -R mysql. /usr/local/mysql/ 主从服务器修改mysql的所属主以及所属组
[root@master/slave01 ~]# yum remove mariadb-libs -y 主从服务器yum卸载maria-libs软件(此软件会导致mysql初始化失败)
[root@master/slave01 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
主从执行此操作使得mysql数据库可以使用service服务启动
以上为mysql的安装以及前期的准备工作,下面进行mysql数据库的初始化以及配置。

[root@master mysql]# pwd (此指令为显示当前位置)
/usr/local/mysql 主机进入数据库
[root@master mysql]# ./scripts/mysql_install_db --user=mysql 执行此操作初始化数据库
[root@master mysql]# ll data
total 110600
-rw-rw----. 1 mysql mysql 12582912 Jun 14 17:12 ibdata1
-rw-rw----. 1 mysql mysql 50331648 Jun 14 17:12 ib_logfile0
-rw-rw----. 1 mysql mysql 50331648 Jun 14 17:12 ib_logfile1
drwx------. 2 mysql mysql 4096 Jun 14 17:12 mysql
drwx------. 2 mysql mysql 4096 Jun 14 17:12 performance_schema
drwxr-xr-x. 2 mysql mysql 20 Jun 14 16:55 test
初始化后如data目录为以上情况说明初始化成功。

[root@master mysql]# vim my.cnf 设置mysql配置文件
主机配置文件如下:
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/tmp/mysql.sock
log-error=/usr/local/mysql/mysql.err
character_set_server=utf8mb4
log-bin=/usr/local/mysql/data/binlog
server-id = 10
[root@master mysql]# touch mysql.err 创建错误日志文件
[root@master mysql]# chown mysql. mysql.err 更改文件所属主以及所属组为mysql
[root@master mysql]# service mysql start 启动mysql
想要进入mysql发现需要增加环境变量。
[root@master mysql]# vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin
[root@master mysql]# source /etc/profile 修改环境变量文件,在最后增加环境变量并刷新文件。
[root@master mysql]# ./bin/mysql_secure_installation --user=mysql 安全初始化并设置root密码
Enter current password for root (enter for none): 输入root密码,因为还未设置直接回车跳过
Set root password? [Y/n] 问是否设置root密码 y
New password: 新密码(任意设置自己记住就好)
Re-enter new password: 重新输入刚才设置的密码
Remove anonymous users? [Y/n] 是否移除匿名用户 y
Disallow root login remotely? [Y/n] 禁止root远程登录(看个人情况设置,一般情况为N)
Remove test database and access to it? [Y/n] 是否要移除测试数据库 y
Reload privilege tables now? [Y/n] 是否要重新加载权限 y
初始化完成,root也已经设置好密码。 主服务器已经安装完成;

[root@master mysql]# mysql -uroot -p
Enter password: (输入刚才设置的密码登录mysql)
mysql> grant repilication slave on . to slave@‘18.18.18.%’ identified by ‘123’; 创建slave账户并授权设置密码为123
mysql> flush privileges; 刷新权限
mysql> flush tables with read lock; 锁表防止数据写入
mysql> show master status; 查看现在启用的二进制文件以及位置;
±--------------±---------±-------------±-----------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±--------------±---------±-------------±-----------------±------------------+
| binlog.000001 | 2380 | | | |
±--------------±---------±-------------±-----------------±------------------+
mysql主机搭建完成

——————————————从机搭建———————————————————

[root@slave01 ~]# rm -rf /usr/local/mysql/data/* 删除mysql下data目录中的所有文件
[root@slave01 mysql]# pwd
/usr/local/mysql 在当前路径下设置配置文件
[root@slave01 mysql]# vim my.cnf 编辑配置文件,文件内容如下
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
log-error=/usr/local/mysql/mysql.err
character_set_server=utf8mb4
server-id=20
relay-log=/usr/local/mysql/data/relaylog
[root@slave01 mysql]# touch mysql.err 创建错误日志文件
[root@slave01 mysql]# chown mysql. mysql.err 更改文件所属主以及所属组为mysql

[root@master ~]# rsync -av /usr/local/mysql/data/* 18.18.18.32:/usr/local/mysql/data/ 主机通过rsync工具远程复制文件到丛机mysql的data目录下
Are you sure you want to continue connecting (yes/no)? yes
[root@slave01 mysql]# rm -rf data/auto.cnf 文件传输完成后删除丛机data目录下的auto.cnf文件(此文件为mysql的uuid文件)
[root@slave01 mysql]# chown -R mysql. /usr/local/mysql/data/ 更改文件所属主以及所属组为mysql
想要进入mysql发现需要增加环境变量
[root@slave01 mysql]# vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin
[root@slave01 mysql]# source /etc/profile 修改环境变量文件,在最后增加环境变量并刷新文件。
[root@slave01 mysql]# mysql -uroot -p
Enter password: (输入密码进入mysql)

在mysql中输入以下指令
mysql> CHANGE MASTER TO
-> MASTER_HOST=‘18.18.18.31’, 设置主机的IP
-> MASTER_USER=‘slave’, 设置用户
-> MASTER_PASSWORD=‘123’, 用户密码
-> MASTER_PORT=3306, 设置端口号
-> MASTER_LOG_FILE=‘binlog.000001’, 设置二进制文件
-> MASTER_LOG_POS=2380; 设置二进制文件起始位置

mysql> start slave; 开启从机服务
mysql> show slave status\G 查看从机服务状态
Slave_IO_Running: Yes
Slave_SQL_Running: Yes 代表从机服务搭建完成并已开启;

进入主机mysql
[root@master ~]# mysql -p
Enter password:
mysql> unlock tables; 输入指令 解锁

总结:mysql主从复制搭建完成,在主机的数据库中输入数据,可以完全同步到从机中,切记不要在从机中执行增、删、改操作,这样会导致主从数据不一致,也会导致主从服务器搭建失败,安装mysql时mysql目录的所属主以及所属组位mysql,权限问题也会导致mysql数据库的启动失败。主从服务器mysql安装完成后,只有主机初始化数据库,从机为主机复制数据已确保主从数据完全一致,数据复制完成后要在从机mysql的data目录中删除auto.cnf文件,要不启动数据库会报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值