mysql的主从复制

2021/9/11 19:05:15

本文主要是介绍mysql的主从复制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

mysql的主从复制
mysql等商业编译用cmake
注意此版本用的是7.6

一、编译mysql

1、获取安装包

[root@ck1 ~] yum install -y cmake
[root@ck1 ~] yum install gcc gcc-c++
[root@ck1 ~] tar zxf mysql-boost-5.7.31.tar.gz 1 

2、编译三部曲

[root@ck1 ~] cd mysql-5.7.31/

[root@ck1 mysql-5.7.31/] cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DSYSCONFDIR=/etc \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general \
-DWITH_BOOST=/root/mysql-8.0.21/boost/boost_1_72_0/ 

[root@ck1 mysql-5.7.31/] make -j2         用两核进行编译
[root@ck1 mysql-5.7.31/] make install

在编译的时候,如果是redhat8版本
将-DDEFAULT_COLLATION=utf8mb4_general改为DDEFAULT_COLLATION=utf8mb4_0900_ai_ci

3、修改配置文件

[root@ck1 mysql-5.7.31] cd /usr/local/mysql/support-files/
[root@ck1 support-files] cp mysql.server /etc/init.d/mysqld
[root@ck1 support-files] cd /usr/local/mysql/
[root@ck1 mysql] vim /etc/my.cnf

图1

4、修改环境变量
方便启动

[root@ck1 bin] cd 
[root@ck1 ~] vim .bash_profile   
[root@ck1 ~] source .bash_profile

在这里插入图片描述
5、建立用户,改组

[root@ck1 ~] useradd -M -d /data/mysql -s /sbin/nologin mysql
[root@ck1 ~] mkdir -p /data/mysql ; chown mysql.mysql /data/mysql

6、启动mysql

[root@ck1 mysql] cd /data/mysql
[root@ck1 mysql] rm -fr *
[root@ck1 mysql] mysqld --initialize --user=mysql  图1、获取起始密码
[root@ck1 mysql] vim /etc/my.cnf    图2
[root@ck1 mysql] /etc/init.d/mysqld start   启动mysql

注意如果重新初始化的时候需要kill -9 mysql的全部进程
在这里插入图片描述

图1、获取起始密码
在这里插入图片描述
图2、
在这里插入图片描述

7、初始化mysql
将密码i#jDNzb915输入到初始化
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
8、获取安装包

在这里插入图片描述
[root@ck1 html]# unzip phpMyAdmin-5.0.2-all-languages.zip
[root@ck1 html]# ln -s phpMyAdmin-5.0.2-all-languages phpadmin
[root@ck1 html]# systemctl start php-fpm.service
[root@ck1 conf]# vim /usr/local/nginx/conf/nginx.conf/nginx.cnf
[root@ck1 conf]# nginx -s reload

在这里插入图片描述

在这里插入图片描述
9、修改php的配置文件

[root@ck1 etc] vim /usr/local/php/etc/php.ini      图1
[root@ck1 etc] systemctl reload php-fpm.service 

图1
在这里插入图片描述
图1
在这里插入图片描述
访问phpadmin可以得到
在这里插入图片描述
在这里插入图片描述
10、插入一个数据库,里面两个表格和内容
在这里插入图片描述

二、主从复制

ck1主机
[root@ck1 etc]# scp /etc/init.d/mysqld 172.25.42.20:/etc/init.d/
[root@ck1 etc]# scp -r /etc/my.cnf 172.25.42.20:/etc/
[root@ck1 etc]# scp -r /usr/local/mysql/ 172.25.42.20:/usr/local/
ck2修改配置文件
[root@ck2 ~]# vim .bash_profile 图1
[root@ck2 ~]# source .bash_profile
[root@ck2 ~]# useradd -M -d /data/mysql -s /sbin/nologin mysql
[root@ck2 ~]# mkdir /data/mysql -p
[root@ck2 ~]# chown mysql.mysql /data/mysql
[root@ck2 ~]# mysqld --initialize --user=mysql
在这里插入图片描述
ck1

[root@ck1 ~] /etc/init.d/mysqld start
[root@ck1 ~] mysql_secure_installation   初始化同上文
[root@ck1 mysql] vim /etc/my.cnf    图1、修改配置文件
[root@ck1 mysql] /etc/init.d/mysqld restart

图1、设置主从
在这里插入图片描述
ck1
进入mysql查看master状态

[root@ck1 ~]# mysql -pwestos
mysql> show master status;                    图1、master状态
mysql> grant replication slave on *.* to repl@'%' identified by 'westos';     授权给repl访问ck1的库

图1
在这里插入图片描述
ck2
利用授权的用户访问
[root@ck2 mysql]# mysql -h 172.25.42.10 -urepl -pwestos
成功访问
在这里插入图片描述
授权,启动,查看slave状态为

mysql> change master to master_host='172.25.42.10',master_user='repl',master_password='westos',master_log_file='mysql-bin.000001',master_log_pos=589;
mysql> start slave;

在这里插入图片描述

二、双机热备

像ck2主机一样先配置,好环境同上步骤1、2、3、4
唯一注意步骤x
[root@ck3 ~] vim /etc/my.cnf
在这里插入图片描述
1、将ck2主机的加入读取存贮功能

[root@ck2 ~] vim /etc/my.cnf               图1
[root@ck2 ~]/etc/init.d/mysqld restart

在这里插入图片描述

2、复制ck2主机mysql库里的ck库给ck3的库

[root@ck2 ~] mysqldump -pwestos ck > dump.sql
[root@ck2 ~] scp dump.sql 172.25.42.30:~

3、ck2主机授权,查看进程

[root@ck2 ~]# mysql -pwestos
mysql> grant replication slave on *.* to repl@'%' identified by 'westos'; 
mysql> show master status;   图1

图1、查看到ck2的结束位置为154
在这里插入图片描述

3、ck3主机创建并导入ck库,设置跟随主机

[root@ck3 ~] mysqladmin -pwestos create ck
[root@ck3 ~] mysql -pwestos ck < dump.sql

mysql> start slave;
change master to master_host='172.25.42.20',master_user='repl',master_password='westos',master_log_file='mysql-bin.000002',master_log_pos=154;       修改主机为ck2,保持同步,起始位置为154

mysql> show slave status\G;

查看到ck3的slave已经启动成功
在这里插入图片描述

四、GTID复制

ck1主机修改
[root@ck1 ~]# vim /etc/my.cnf
[root@ck1 ~]# /etc/init.d/mysqld restart

在这里插入图片描述

ck2主机
[root@ck1 ~]# vim /etc/my.cnf
[root@ck1 ~]# /etc/init.d/mysqld restart

在这里插入图片描述

ck3主机
[root@ck1 ~]# vim /etc/my.cnf
[root@ck1 ~]# /etc/init.d/mysqld restart
在这里插入图片描述

[root@ck3 ~] mysql -pwestos
mysql> stop slave;
mysql> change master to master_host='172.25.42.20',master_user='repl',master_password='westos',MASTER_AUTO_POSITION = 1;
mysql> start slave;

测试在ck1的mysql厘米里面插入数值

[root@ck1 ~] mysql -pwestos
mysql> use ck;
mysql> insert into hhh values ('user222','222');

在ck3用户里查看

[root@ck3 ~] mysql -pwestos
mysql> select * from ck.hhh;

查看到数据
在这里插入图片描述



这篇关于mysql的主从复制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程