glibc回顾及数据库的主从复制(twenty-two day)

news2024/11/27 4:26:26

一、glibc安装(回顾及补充)

mysql

清空/etc/目录下的my.cnf

ls -l /etc/my.cnf

rm -rf /etc/my.cnf

yum -y remove mariadb

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

安装mysql软件包

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-li

nux-glibc2.12-x86_64.tar

解压

[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

将项目文件移动到/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)

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

mkdir /usr/local/mysql/mysql-files
修改mysql-files的权限为750 所属的组和属主都是mysql

chown mysql:mysql /usr/local/mysql/mysql-files/
chmod 750 /usr/local/mysql/mysql-files/
ll /usr/local/mysql/
总用量 292
drwxr-xr-x  2 root  root    4096 8月   5 09:48 bin
drwxr-xr-x  2 root  root      38 8月   5 09:48 docs
drwxr-xr-x  3 root  root     282 8月   5 09:48 include
drwxr-xr-x  6 root  root     201 8月   5 09:48 lib
-rw-r--r--  1 root  root  284945 8月   5 09:48 LICENSE
drwxr-xr-x  4 root  root      30 8月   5 09:48 man
drwxr-x---  2 mysql mysql      6 8月   5 09:55 mysql-files
-rw-r--r--  1 root  root     666 8月   5 09:48 README
drwxr-xr-x 28 root  root    4096 8月   5 09:48 share
drwxr-xr-x  2 root  root      77 8月   5 09:48 support-files
初始化数据库

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/
2024-08-05T02:02:01.330394Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.33) initializing of server in progress as process 2825
2024-08-05T02:02:01.345707Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-08-05T02:02:02.337448Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-08-05T02:02:04.033580Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ax8c5SwT(p/u(mysql密码)
判断是否生成了data目录

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

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

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

service mysql8 start

#修改密码

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

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

#添加开机启动

systemctl enable mysqld

chkconfig --list

chkconfig --add mysql8

chkconfig --list

将mysql的bin也添加到$PATH

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

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

source /etc/profile

mysql

select host,user from mysql.user;
create user 'aaa'@'%' identified by 'aaaa';
select host,user from mysql.user;
quit

打开防火墙或者端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --reload

打开navicat远程登陆mysql

create role a;
select host,user from mysql.user;
#角色保存在user表里面
grant all on *.* to a;
#给a所有的权限
show grants for a;
grant a to aaa;
#把a的权限全部给aaa
show grants for aaa;
quit

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、高可用标准
可用性级别指标年宕机时间描述叫法
99%3.65天基本可用系统2个9
99.9%8.76小时可用系统3个9
99.99%52.6分钟高可用系统4个9
99.999%5.3分钟扛故障系统5个9
99.9999%32秒容错系统6个9
3、常用的集群架构

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

4、复制原理

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

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

(从服务器不能修改,只能修改主服务器)

(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 root@192.168.1.22:/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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985510.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

某永PM2项目管理系统ExcelIn接口任意文件上传漏洞复现 [附POC]

文章目录 某永PM2项目管理系统ExcelIn接口任意文件上传漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现某永PM2项目管理系统ExcelIn接口任意文件上传漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内的相…

三大产品板块快速发展,零信任价值备受认可

经过多年发展,零信任商业模式走向成熟,市场逐步规模化,已经在各个行业进入落地阶段。 软件定义边界类产品纳管员工总数 2023年,软件定义边界产品(SDP)的应用潜力开始显现,市场进入高速发展期。…

vgg16网络搭建可运行代码

目录 1.我搭建的是这一个 2.方法一,用一个sequential配置 2 方法二,用cfg进行配置 1.我搭建的是这一个 2.方法一,用一个sequential配置 import torch from torch import nn from torchinfo import summaryclass Net(nn.Module):def __init…

el-table固定指定的行

这个整个表格数据都是后台返回的,并不是合并表格的那种,所以需要手动对表格进行样式处理! <el-table :data"tableData" border height"calc(400px - 0.52rem)" max-height"calc(400px - 0.52rem)" :row-class-name"TableRowClassNa…

如何降低光伏项目的初始投资成本?

高昂的初始投资成本一直是制约光伏项目发展的主要因素之一。本文将从多个方面探讨如何有效降低光伏项目的初始投资成本。 一、优化系统设计 1.合理规划组件布局 光伏项目的系统设计是降低成本的关键。合理的组件布局可以最大化利用光照资源&#xff0c;提高发电效率。根据安装…

Word怎么转换成PDF?介绍三种转换小妙招

Word怎么转换成PDF&#xff1f;在日常工作和学习中&#xff0c;Microsoft Word文档&#xff08;.docx&#xff09;因其强大的编辑功能而广受欢迎。然而&#xff0c;在需要将文档发送给不同用户或进行长期存档时&#xff0c;PDF格式&#xff08;.pdf&#xff09;因其跨平台兼容性…

Hyper-v下Linux虚拟机的FTP传输资源解决办法

由于linux环境下全新安装测试的需要&#xff0c;决定使用虚拟机来解决&#xff0c;正好win10 pro自带了Hyper-v 虚拟机&#xff0c;然后主机bios里开启虚拟指令支持&#xff0c;关闭hyper-v的uefi安全启动项&#xff0c;选择一个本地的ubuntu 20.04.6.iso当安装镜像&#xff0c…

数据结构与算法 - AVL树

一、概述 1. 历史 AVL树是一种自平衡二叉搜索树&#xff0c;由托尔哈斯特罗姆在1960年提出并在1962年发表。它的名字来源于发明者的名字&#xff1a;Adelson-Velsky和Landis&#xff0c;他们是苏联数学家&#xff0c;于1962年发表了一篇论文&#xff0c;详细介绍了AVL树的概念…

插画用什么软件?11款不可低估的绘图工具推荐

现如今插画已经成为设计师的必备武器&#xff0c;而你是否被插画困住过设计进度呢&#xff1f;今天。即时设计设计师就来给大家来个“投机取巧”的好方法&#xff0c;特意为大家整理了11款绘制插画软件&#xff0c;尤其是第一款更是拥有3000插画素材&#xff0c;不仅省时省力&a…

前端day3-表格

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>day3-表格</title> </head> <body&g…

社交媒体分享预览图片和内容修改

在facebook发帖分享链接时&#xff0c;设置预览图片和内容 设置预览图片和内容 <head> <meta name"description" content"我是内容" /> </head> <body><img src"./1.jpg" alt"SEO Image" style"dis…

MapStruct丝滑替换BeanUtils.copyProperties

文章目录 1 工具应用场景2 使用效果3 使用方法3.1 引入jar包3.2 指定lombok与MapStruct执行顺序3.3 定义Mapper接口3.4 重新打包 4 练习手段 1 工具应用场景 BeanUtils.copyProperties拷贝对象同名属性&#xff0c;利用反射原理&#xff0c;耗时长&#xff0c;在对性能要求高的…

SEO专家教你玩转谷歌外链!

​要想玩转谷歌外链&#xff0c;你得了解并掌握以下三种主流的外链策略。每种策略在不同情况下都有独到之处&#xff0c;具体怎么做&#xff0c;我来详细说说。 1.GPB独立站外链。这种方式主要是在数量较少的独立域名上发布全是dofollow的链接。关键在于确保链接的高质量和持久…

清洁能源时代,ARMxy智慧网关为风电行业保驾护航

在全球能源转型的背景下&#xff0c;清洁能源的发展成为了各国关注的焦点。风电作为一种可再生能源&#xff0c;具有巨大的发展潜力。而 ARMxy 工控机作为工业自动化领域的重要设备&#xff0c;在风电行业中发挥着至关重要的作用&#xff0c;为清洁能源的发展提供了有力的支持。…

角色模块开发

文章目录 &#x1f31e; Sun Frame&#xff1a;SpringBoot 的轻量级开发框架&#xff08;个人开源项目推荐&#xff09;&#x1f31f; 亮点功能&#x1f4e6; spring cloud模块概览常用工具 &#x1f517; 更多信息1.easycode生成基础代码1.配置2.将dao层代码剪切到mapper层3.A…

设计师的救星,效率插件大合集!有了它设计效率翻倍

作为一名设计师&#xff0c;我相信大家都有这样的痛苦经历&#xff1a;为了完成一个设计项目&#xff0c;得下载一堆工具&#xff0c;像 snipaste、pureref、eagle 等&#xff0c;每个都要单独下载、单独打开使用。还有一些效率工具&#xff0c;比如 utools 或 hapigo&#xff…

OpenCV图像滤波(6)高斯滤波函数GaussianBlur()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 函数使用高斯滤波器对图像进行模糊处理。 该函数使用指定的高斯核对源图像进行卷积。支持原位过滤。 高斯模糊是一种有效的图像平滑技术&#xf…

实验23.硬盘分区,并编写硬盘驱动程序

已完成实验 已完成实验链接 简介 实验 23. 硬盘分区&#xff0c;并编写硬盘驱动程序 总结 创建硬盘并分区 加载硬盘分区 实现 printk 使能硬盘中断 interrupt.c idel 线程,主线程阻塞后此线程保底 thread.c sleep 函数 timer.c 加载分区信息 ide.c 创建硬盘 fdisk …

[Web服务器] 简易静态Web服务器的搭建

什么是Web服务器 可以为发出请求的浏览器提供静态文档的程序。 平时我们浏览百度新闻数据的时候&#xff0c;每天的新闻数据都会发生变化&#xff0c;那访问的这个页面就是动态的&#xff0c;而我们开发的是静态的&#xff0c;每天访问我们自己的静态web服务器&#xff0c;页面…

宠物托运网站如何搭建?5步帮你吸引70%顾客!

引言 随着人们生活水平的提高和宠物文化的普及&#xff0c;越来越多的宠物主人开始选择带着自己的宠物一同旅行或搬迁至新的城市。这一趋势催生了宠物托运服务行业的快速发展&#xff0c;而一个专业、高效的宠物托运网站则成为了连接宠物主人与托运服务提供商之间不可或缺的桥…