首页 > 数据库 >2024年8月6日(MySQL主从)

2024年8月6日(MySQL主从)

时间:2024-08-06 19:28:06浏览次数:9  
标签:slave root MySQL 2024 master usr mysql local 主从

一、glibc安装(回顾及补充)
1、清空/etc/目录下的my.cnf

ls -l /etc/my.cnf

rm -rf /etc/my.cnf

yum -y remove mariadb

find / -name "*mysql*" -exec rm -rf {} \;

2、安装mysql软件包

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-linux-glibc2.12-x86_64.tar

3、解压

[root@Mysql-001 ~]# ls
mysql-8.0.33-linux-glibc2.12-x86_64.tar
[root@Mysql-001 ~]# tar -xvf mysql-8.0.33-linux-glibc2.12-x86_64.tar 
[root@Mysql-001 ~]# tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz 
[root@Mysql-001 ~]# ls mysql-8.0.33-linux-glibc2.12-x86_64
bin  docs  include  lib  LICENSE  man  README  share  support-files

4、将项目文件移动到/usr/local/mysql/

cp -r mysql-8.0.33-linux-glibc2.12-x86_64/ /usr/local/mysql/
yum list installed | grep libaio   #检查是否有libaio
libaio.x86_64                         0.3.109-13.el7                   @anaconda
[root@Mysql-001 ~]# useradd -r -s /sbin/nologin mysql
[root@Mysql-001 ~]# id mysql
uid=997(mysql) gid=995(mysql) 组=995(mysql)

5、在/usr/local/mysql/目录下创建mysql-files目录

mkdir /usr/local/mysql/mysql-files

6、修改mysql-files的权限为750 所属的组和属主都是mysql

chown mysql:mysql /usr/local/mysql/mysql-files/
chmod 750 /usr/local/mysql/mysql-files/
ll /usr/local/mysql/
drwxr-xr-x  2 root  root      77 8月   5 09:48 support-files

7、初始化数据库

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/

8、判断是否生成了data目录

ls /usr/local/mysql     #有data目录就是初始化成功了

9、把mysql.server文件放到/etc/init.d/目录下(方便启动mysql服务 service mysql start)

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql8

service mysql8 start

10、修改密码

usr/local/mysql/bin/mysql -uroot -p

alter usr 'root@localhost' identified with mysql_native_password BY 'Zhang@2002';

11、添加开机启动

systemctl enable mysqld

chkconfig --list

chkconfig --add mysql8

chkconfig --list

 vim /usr/local/mysql/mysql.cnf

在配置文件中添加activate_all_roles_on_login=on

glibc安装,my.cnf在项目目录之下;

rpm安装。my.cnf文件在/etc/my.cnf

service mysql8 restart 

二、主从复制
1、备份的三种类型

(1)热备份

(2)逻辑备份

(3)物理备份(最烧钱)

2、技术

(1)熟悉mysql数据库常见的主从架构

(2)理解mysql主从架构实现原理

(3)掌握mysql主从架构的搭建(主要)

(一)集群
1、集群主要类型

(1)高可用集群 High Avaible Cluster HA cluster
(2)高可用集群是指通过特殊软件,把独立的服务器连接起来,组成一个能够提供故障切换(Fail Over)功能的集群

2、高可用标准

3、常用的集群架构

(1)mysql replication
(2)mysql cluster
(3)mysql group replication MGR
(4)Maradb Galera CLuster
(5)MHAlkeepalived HeatBeatLvs,Haproxy等技术构建高可用集群

1.replication,可以实现将数据从一台数据库服务器(mster)复制到多台数据库服务器slave

2.默认情况下,replication属于异步复制,所以无需长连接
3.工作原理
(1)主服务器master
(2)从服务器 slave

(1)slave端的io线程发送请求给master端的binlog dump线程
(2)master端的binlog dump线程获取二进制日志信息(文件名和位置信息)发送给slave端的io线程
(3)slave端的io线程获取到内容,依次写到slave端relaylog(中继日志)并把master端的binlog文件名和位置记录到master。info里头,
(4)slave端的sql线程检测到relaylog中的内容更新,就会解析relaylog中的更新内容,并执行这些操作,从而达到和master端数据一致

5、复制架构体系
(1)双机热备 主从复制 ((默认情况下master接收读写,从服务器只接受读))

(2)级联(串联)复制(可以分担读的压力;中间服务器出现故障就瘫痪了)

(3)并联复制 一主多从(解决单点故障;承担更多读的压力;从服务器都从主服务器读取数据,master服务器压力大)

(4)双主复制(看起来可以同时接受读写,实际运作中只有一台服务器在工作,另外一台只接受读)

(二)主从同步实际操作

创建两台虚拟机(master-mysql    slave-mysql)

master-mysql:
[root@master-mysql ~]#  yum -y install ntpdate.x86_64
[root@master-mysql ~]# ntpdate cn.ntp.org.cn
 6 Aug 11:21:00 ntpdate[1204]: adjust time server 182.92.12.11 offset 0.007708 sec
[root@master-mysql ~]# yum -y install rsync

安装mysql-8.0.33-linux-glibc2.12-x86_64.tar包

[root@master-mysql ~]# vim mysql.sh

#!/bin/bash
yum list installed |grep libaio
if [ $? ne 0 ]; then
        yum -y install libaio
fi
echo libaio yes
rm -rf /etc/my.cnf
echo remo my.cnf yes

tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
echo tar zx yes

cp -r ~/mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql
echo copy file to /usr/local/mysql   yes

mkdir /usr/local/mysql/mysql-files
echo mysql-files yes

grep mysql /etc/passwd

        useradd -r -s /sbin/nologin mysql

chown mysql:mysql /usr/local/mysql/mysql-files
chmod 750 /usr/local/mysql/mysql-files

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/

/usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql8

sed -i '$aexport PATH=/usr/local/mysql/bin:$PATH' /etc/profile
source /etc/profile

[root@master-mysql ~]# source mysql.sh

[root@master-mysql ~]# service mysql8 start
[root@master-mysql ~]# /usr/local/mysql/bin/mysql -uroot -p

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Zhang@2002';
quit

[root@master-mysql ~]# vim /usr/local/mysql/my.cnf

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/db01-master.err
log-bin=/usr/local/mysql/data/binlog
server-id=10
character_set_server=utf8mb4

设置开机自启动

[root@master-mysql ~]# systemctl enable mysql8

[root@master-mysql ~]# chkconfig --add mysql8
[root@master-mysql ~]# chkconfig mysql8 on
[root@master-mysql ~]# chkconfig --list

注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。 

      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。

mysql8             0:关    1:关    2:开    3:开    4:开    5:开    6:关
netconsole         0:关    1:关    2:关    3:关    4:关    5:关    6:关
network            0:关    1:关    2:开    3:开    4:开    5:开    6:关

[root@master-mysql ~]# service mysql8 restart

[root@master-mysql ~]# service mysql8 stop

[root@master-mysql ~]# rm -rf /usr/local/mysql/data/auto.cnf

#删除auto.cnf,否则会是主从失败

[root@master-mysql ~]# rsync -av /usr/local/mysql/data [email protected]:/usr/local/mysql

[root@master-mysql ~]# service mysql8 start

[root@master-mysql ~]# mysql -pZhang@2002

mysql> create user 'slave'@'%' identified by 'Zhang@2002';
Query OK, 0 rows affected (0.01 sec)
 
mysql> grant replication slave on *.* to 'xiaojiang'@'%';
Query OK, 0 rows affected (0.00 sec)
 
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 10    |
+---------------+-------+
1 row in set (0.01 sec)
 
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
 
mysql> create database if not exists abc charset utf8;
ERROR 1223 (HY000): Can't execute the query because you have a conflicting read lock
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000003 |     1183 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
#File(当前文件的文件名)  Position(当前位置)

slave-mysql:
[root@slave-mysql ~]#  yum -y install ntpdate.x86_64

[root@master-mysql ~]# ntpdate cn.ntp.org.cn
 6 Aug 11:21:00 ntpdate[1204]: adjust time server 182.92.12.11 offset 0.007708 sec
[root@slave-mysql ~]# yum -y install rsync

安装mysql-8.0.33-linux-glibc2.12-x86_64.tar包

[root@slave-mysql ~]# vim mysql.sh

#!/bin/bash
yum list installed |grep libaio
if [ $? ne 0 ]; then
        yum -y install libaio
fi
echo libaio yes
rm -rf /etc/my.cnf
echo remo my.cnf yes

tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
echo tar zx yes

cp -r ~/mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql
echo copy file to /usr/local/mysql   yes

mkdir /usr/local/mysql/mysql-files
echo mysql-files yes

grep mysql /etc/passwd

        useradd -r -s /sbin/nologin mysql

chown mysql:mysql /usr/local/mysql/mysql-files
chmod 750 /usr/local/mysql/mysql-files

注释掉或者删掉

#/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/

#/usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql8

sed -i '$aexport PATH=/usr/local/mysql/bin:$PATH' /etc/profile
source /etc/profile

[root@slave-mysql ~]# source mysql.sh

[root@slave-mysql ~]# vim /usr/local/mysql/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3310
log-error=/usr/local/mysql/data/db01-slave.err
relay-log=/usr/local/mysql/data/relaylog
server-id=11
character_set_server=utf8mb4

查看/usr/local/mysql目录下有没有data,有的话就可以开启服务器

[root@slave-mysql ~]# service mysql8 start

[root@slave-mysql ~]# mysql -pZhang@2002;

mysql> change master to
    -> master_host='192.168.1.21',
    -> master_user='xiaojiang',
    -> master_password='Zhang@2002',
    -> master_port=3306,
    -> master_log_file='binlog.000003',
    -> master_log_pos=1183;
Query OK, 0 rows affected, 9 warnings (0.02 sec)
 
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.02 sec)
 
mysql> show slave status\G;

需要ssl非对称加密

[root@slave-mysql ~]# mysql -uxiaojiang -pZhang@2002 -h192.168.1.21 -P3306 --get-server-public-key          #获得公钥

登陆slave服务器本地的数据库

[root@slave-mysql ~]# mysql -pZhang@2002 -P3306

停用slave服务,重新配置slave服务

mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.02 sec)
 
mysql> reset slave;
Query OK, 0 rows affected, 1 warning (0.03 sec)
 
mysql> change master to
    -> master_host='192.168.1.21',
    -> master_user='xiaojiang',
    -> master_password='Zhang@2002',
    -> master_port=3306,
    -> master_log_file='binlog.000003',
    -> master_log_pos=1183;
Query OK, 0 rows affected, 9 warnings (0.01 sec)

启动slave服务

mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.02 sec)
 
mysql> show slave status\G;
 
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 192.168.1.21
                  Master_User: xiaojiang
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binlog.000003
          Read_Master_Log_Pos: 1183
               Relay_Log_File: relaylog.000002
                Relay_Log_Pos: 323
        Relay_Master_Log_File: binlog.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

[root@slave-mysql ~]# mysql -pZhang@2002 -P3306

标签:slave,root,MySQL,2024,master,usr,mysql,local,主从
From: https://blog.csdn.net/weixin_70751333/article/details/140963657

相关文章

  • 2024.8.06(mysql主从)
    一、glibc安装(回顾)mysql清空/etc/目录下的my.cnfls-l/etc/my.cnfrm-rf/etc/my.cnfyum-yremovemariadbfind/-name"*mysql*"-execrm-rf{}\;1、安装mysql软件包wgethttps://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-linux-glibc2.12......
  • MySQL数据库基础1
    sql通用语法SQL语句可以单行或多行书写,以分号结尾。SQL语句可以使用空格/缩进来增强语句的可读性MySQL数据库的SQL语句不区分大小写,关键字建议使用大写注释:单行注释:--注释内容或#注释内容(MySQL特有)多行注释:/*注释内容*SQL分类DDL库操作查询所有数据库sho......
  • 云计算22-------主从复制
    一、glibc安装(回顾及补充)mysql清空/etc/目录下的my.cnfls-l/etc/my.cnfrm-rf/etc/my.cnfyum-yremovemariadbfind/-name"*mysql*"-execrm-rf{}\;安装mysql软件包wgethttps://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-linux-glibc2.12......
  • Goby漏洞发布 | CVE-2024-38856 Apache OFbiz /ProgramExport 命令执行漏洞【已复现】
    漏洞名称:ApacheOFbiz/ProgramExport命令执行漏洞(CVE-2024-38856)EnglishName:ApacheOFbiz/ProgramExportCommandExecutionVulnerability(CVE-2024-38856)CVSScore:9.0漏洞描述:ApacheOFBiz是一个电子商务平台,用于构建大中型企业级、跨平台、跨数据库、跨应用服务器的......
  • 2024宝塔批量建站搭建易优cms_易优批量上站
     宝塔全自动搭建易优cms批量建站 软件教程文本:大家好,这里是好主题网nbzhuti.cnQQ:822674928今天给大家带来的是易优cms批量建站首先我们要准备宝塔,开启宝塔api,然后相关信息填写到config.iniconfig.ini里面可以填写其他的配置项比如:php版本网站的用户名,密码,伪静态这......
  • MySQL——SQL语句
    文章目录什么是SQL?SQL通用语法SQL分类DDL:操作数据库、表3.1操作数据库:CRUD3.2操作表CRUDDML:增删改表中数据1.添加数据:2.删除数据:3.修改数据:DQL:查询表中的记录1.语法:2.基础查询3.条件查询4.排序查询其他函数5.聚合函数6.分组查询7.分页查询:DCL:管理用户,授权1.管理用......
  • Apache OFBiz 授权不当致远程代码执行漏洞(CVE-2024-38856)
    0x01产品简介ApacheOFBiz是一个电子商务平台,用于构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类应用系统。是美国阿帕奇(Apache)基金会的一套企业资源计划(ERP)系统。该系统提供了一整套基于Java的Web应用程序组件和工具。0x02漏洞概述2024年8月......
  • 契约锁电子签章平台 /param/edits 远程代码执行漏洞复现(XVE-2024-18394)
    0x01产品简介契约锁电子签章平台是上海亘岩网络科技有限公司推出的一套数字签章解决方案。契约锁为中大型组织提供“数字身份、电子签章、印章管控以及数据存证服务”于一体的数字可信基础解决方案,可无缝集成各类系统,让其具有电子化签署的能力,实现组织全程数字化办公。通......
  • 进制表示-科大讯飞2024笔试(codefun2000)
    题目链接进制表示-科大讯飞2024笔试(codefun2000)题目内容我们已经知道2进制到10进制表示方法,与16进制类似,我们考虑11~36进制,即用a代表10,b代表11等。我们想知道给定一个10进制数n,其在2~36进制下的所有进制表示中,含有1的数量最多是多少。比如4......
  • 2024.7.27模拟赛9
    模拟赛炸裂场,交互+提答T1ラーメンの食べ比べ交互题,没做过。。。\(N\le400\),有\(600\)次询问,其实还挺水的。先考虑二分,两两一组比较,会得到\(200\)个较大的和\(200\)个较小的,还剩\(400\)次查询。既然还剩\(400\)次查询,那也不用考虑二分了,直接\(200\)个暴力比......