mysql的主从复制
mysql等商业编译用cmake
注意此版本用的是7.6
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已经启动成功
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;
查看到数据