mysql--备份/主从同步/安装

2023-10-29

1、编写脚本,支持让用户自主选择,使用mysqldump还是xtraback全量备份。
#!/bin/bash
date=`date '+%F'`
sock="-S /data/mysql/mysql3306/socket/mysql.sock"
dbdir="/backup/db"

read -p "pleas input you db username :" user
read -p "pleas input you db password :" passwd

#mysqldump方法备份
sqldump(){
  while :;do
     read -p "Are you bakup all databases: " yn
     if [[ "$yn" =~ ^[yY]([Ee][Ss])?$ ]];then
     #备份所有库
          mysqldump $sock  -u${user} -p${passwd} -A -F --single-transaction --master-data=2|gzip > ${dbdir}/all-${date}.sql.gz
          echo "database bakup in ${dbdir}/all-${date}.sql.gz"
          exit 0
     elif [[ "$yn" =~ ^[Nn][Oo]?$ ]];then
          mysql $sock -u${user} -p${passwd} -e 'show databases'
          read -p "chose you bakup databases :" db
          #备份部分库
          mysqldump $sock -u${user} -p${passwd} -B ${db}|gzip > ${dbdir}/part-${date}.sql.gz
          echo "database bakup in ${dbdir}/part-${date}.sql.gz"
          exit 0
      else
          echo 'please input y or n'
          continue 1
      fi 
   done
}

#xtrabackup方法备份
xtrabak(){
      read -p "input you backup dir(default /backup/db): " xdbdir
      [ -z $xdbdir ] && xdbdir=$dbdir  
      [ -d $xdbdir ] || mkdir -p $dbdir
      mariabackup $sock --backup --target-dir=${xdbdir} --user=$user
}

main(){
      read -p "please chose you backup 1:mysqldump,2:xtrabackup: " num
      if [ "$num" -eq 1 ];then
         sqldump
      elif [ $num -eq 2 ];then
         xtrabak
      else
         echo "please input 1 or 2"
      fi
}

main
2、配置Mysql主从同步

1 主服务器
vim /etc/my.cnf server-id=1 log-bin=/data/logbin/mysql

mysql> grant replication slave on . to repluser@‘192.168.36.%’
identified by ‘centos’;

mysqldump -A --single-transaction --master-data=1 -F > /data/all.sql
scp /data/all.sql 将来的从服务器上:/data

2 从服务器
vim /etc/my.cnf server-id=2 read-only

vim /data/all.sql CHANGE MASTER TO MASTER_HOST=‘192.168.37.7’,
MASTER_USER=‘repluser’, MASTER_PASSWORD=‘centos’, MASTER_PORT=3306,
MASTER_LOG_FILE=‘mariadb-bin.000002’, MASTER_LOG_POS=245;

mysql < /data/all.sql mysql> start slave;

insert teachers (name,age) values(‘wang’,30);

slave-skip-errors=1062

1 主服务器

vim /etc/my.cnf
server-id=1
log-bin=/data/logbin/mysql

mysql> grant replication slave on *.* to repluser@'192.168.36.%' identified by  'centos';

mysqldump -A --single-transaction --master-data=1  -F > /data/all.sql 
scp /data/all.sql 将来的从服务器上:/data

2 从服务器

vim /etc/my.cnf
server-id=2
read-only


vim /data/all.sql
CHANGE MASTER TO
MASTER_HOST='192.168.37.7',
MASTER_USER='repluser',
MASTER_PASSWORD='centos',
MASTER_PORT=3306,                                                                                                       MASTER_LOG_FILE='mariadb-bin.000002', 
MASTER_LOG_POS=245;

mysql < /data/all.sql
mysql> start slave;

insert teachers (name,age) values('wang',30);
3、使用MHA实现Mysql高可用。
  • 在管理节点上安装两个包
    mha4mysql-manager
    mha4mysql-node
  • 在被管理节点安装
    mha4mysql-node
  • 在管理节点建立配置文件
    vim /etc/mastermha/app1.cnf
    [server default] user=mhauser password=magedu manager_workdir=/data/mastermha/app1/ manager_log=/data/mastermha/app1/manager.log remote_workdir=/data/mastermha/app1/ ssh_user=root repl_user=repluser repl_password=magedu ping_interval=1
    [server1] hostname=192.168.8.17 candidate_master=1 [server2] hostname=192.168.8.27 candidate_master=1 [server3] hostname=192.168.8.37
  • 实现Master
    vim /etc/my.cnf
    [mysqld]
    log-bin server_id=1
    skip_name_resolve=1
    mysql>show master logs mysql>grant replication slave on . to repluser@‘192.168.8.%’ identified by ‘magedu’; mysql>grant all on . to mhauser@‘192.168.8.%’identified by‘magedu’;
  • 实现slave
    vim /etc/my.cnf
    [mysqld]
    server_id=2 不同节点此值各不相同
    log-bin read_only relay_log_purge=0 skip_name_resolve=1
    mysql>CHANGE MASTER TO MASTER_HOST=‘MASTER_IP’, MASTER_USER=‘repluser’, MASTER_PASSWORD=‘magedu’, MASTER_LOG_FILE=‘mariadb-bin.000001’, MASTER_LOG_POS=245;
  • 在所有节点实现相互之间ssh key验证
  • Mha验证和启动
    masterha_check_ssh --conf=/etc/mastermha/app1.cnf masterha_check_repl --conf=/etc/mastermha/app1.cnf masterha_manager --conf=/etc/mastermha/app1.cnf
  • 排错日志: /data/mastermha/app1/manager.log
1、 导入hellodb.sql生成数据库
(1) 在students表中,查询年龄大于25岁,且为男性的同学的名字和年龄

select name,age from students where age > 25 and gender = ‘男’;

(2) 以ClassID为分组依据,显示每组的平均年龄

select classid,avg(age) from students group by classid;

(3) 显示第2题中平均年龄大于30的分组及平均年龄

select classid,avg(age) as age from students group by classid having age > 30;

(4) 显示以L开头的名字的同学的信息

select * from students where name like ‘L%’;

2、数据库授权magedu用户,允许192.168.1.0/24网段可以连接mysql

create user magedu@‘192.168.1.%’ identified by ‘123456’;
select user,host,password from mysql.user where user=‘magedu’;
grant all on . to magedu@‘192.168.0.%’ identified by ‘123456’;
show grants for magedu@‘192.168.0.%’;
update user set host=‘192.168.0.%’ where user=‘magedu’;
flush privileges;
select user,host,password from user where user=‘magedu’;

3、总结mysql常见的存储引擎以及特点。
  • MyISAM引擎特点
    不支持事务
    表级锁定
    读写相互阻塞,写入不能读,读时不能写
    只缓存索引
    不支持外键约束
    不支持聚簇索引
    读取数据较快,占用资源较少
    不支持MVCC(多版本并发控制机制)高并发
    崩溃恢复性较差
    MySQL5.5.5前默认的数据库引擎
  • InnoDB引擎特点
    行级锁
    支持事务,适合处理大量短期事务
    读写阻塞与事务隔离级别相关
    可缓存数据和索引
    支持聚簇索引
    崩溃恢复性更好
    支持MVCC高并发
    从MySQL5.5后支持全文索引
    从MySQL5.5.5开始为默认的数据库引擎
  • 其它存储引擎
  • Performance_Schema:Performance_Schema数据库使用
  • Memory :将所有数据存储在RAM中,以便在需要快速查找参考和其他类似 数据的环境中进行快速访问。适用存放临时数据。引擎以前被称为HEAP引擎
  • MRG_MyISAM:使MySQL DBA或开发人员能够对一系列相同的MyISAM表 进行逻辑分组,并将它们作为一个对象引用。适用于VLDB(Very Large Data Base)环境,如数据仓库
  • Archive :为存储和检索大量很少参考的存档或安全审核信息,只支持 SELECT和INSERT操作;支持行级锁和专用缓存区
  • Federated联合:用于访问其它远程MySQL服务器一个代理,它通过创建一 个到远程MySQL服务器的客户端连接,并将查询传输到远程服务器执行,而 后完成数据存取,提供链接单独MySQL服务器的能力,以便从多个物理服务 器创建一个逻辑数据库。非常适合分布式或数据集市环境

mysql二进制安装


# tar xvf mysql-5.7.26-el7-x86_64.tar.gz  -C /usr/local/
# useradd -r -s /bin/false mysql 
# ln -s /usr/local/mysql-5.7.26-el7-x86_64/ /usr/local/mysql
# mkdir /data/mysql 
# chown mysql.mysql /data/mysql /usr/local/mysql

# cd /usr/local/mysql
# mysqld --initialize --user=mysql --datadir=/data/mysql 
# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
# cp /usr/local/mysql/support-files/mysql-huge.cnf  /etc/my.cnf 
vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid

[client]
socket=/data/mysql/mysql.sock


# cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld 
chkconfig --add mysqld
chkconfig --list

# service mysqld start 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql--备份/主从同步/安装 的相关文章

  • MySQL中是否有类似Oracle中“level”的函数[重复]

    这个问题在这里已经有答案了 我面临一个场景 如果输入是 10 我想要一个数字序列 1 2 3 10 在甲骨文中levelfunction 提供了该功能 我想知道如何在 MySQL 中执行相同的任务 谢谢 您可以在 mysql 中使用此查询
  • 我可以在 Ubuntu 上使用 Homebrew 吗?

    我只是尝试使用 Homebrew 和 Linuxbrew 在我的 Ubuntu 服务器上安装软件包 但都失败了 这就是我尝试安装它们的方法 sudo apt get install build essential curl git m4 r
  • 使用 pip3 安装 mysqlclient 时遇到问题

    我正在尝试使用 Django 设置 python 3 6 环境 安装说明说我应该安装 mysqlclient 才能连接到 mySQL 我明白了 dennis django sudo H pip3 install mysqlclient Co
  • WooCommerce:在数据库中查找产品

    我正在使用 WooCommerce 创建一个网站 我想根据用户在主页搜索表单中输入的邮政编码来限制用户可用的产品 为了能够实现这一目标 我必须在 phpMyAdmin 的数据库中指定每个产品的条件 但我似乎找不到它 有谁知道 phpmyAd
  • Linux 中的 Windows NAmed Pipes 替代品

    我们正在将现有的 Windows 代码移植到 Linux 我们使用 ACE 作为抽象层 我们使用 Windows 命名管道与多个客户端进行通信并执行重叠操作 linux 下这个相当于什么 我检查了linux命名管道 FIFO 但它们似乎只支
  • PDO::commit 之后使用 PDOStatement::rowCount 结果?

    在 MySQL 文档中 有一个关于使用的注释mysql affected rows事务提交后 http php net manual en function mysql affected rows php http php net manu
  • 基于列顺序的查询速度

    数据库中列类型的顺序对查询时间有影响吗 例如 具有混合排序 INT TEXT VARCHAR INT TEXT 的表的查询速度是否会比具有连续类型 INT INT VARCHAR TEXT TEXT 的表慢 答案是肯定的 这确实很重要 而且
  • 整理有关 QueryDSL-JPA 的提示

    有没有办法用 QueryDSL 来执行它 粗体部分 从地点选择 其中名称如 cafe 整理 Latin1 general CI AI 我将 JPA 与 hibernate 一起使用 您可以使用addFlag QueryFlag Positi
  • 仅当变量不为空时 SQL 添加过滤器

    您好 我有疑问如下 SELECT route id ROUTE ID FROM route master NOLOCK WHERE route ou 2 AND route query l s query AND lang id 1 这里
  • 如何在 Laravel 中编写联合查询?

    我正在使用 laravel 5 0 并且我有 mysql 查询 SELECT surat masuk id surat surat masuk nomor surat FROM surat masuk WHERE EXISTS SELECT
  • 使用绑定和空值命中 Oracle 索引的最佳查询

    我有一个表 该表在多个列上有一个索引 其中许多列可以为空 CREATE UNIQUE INDEX UX MYTABLE A B C D E ON MYTABLE A B C D E 现在 我在 C 代码中尝试检查该表并精确命中索引 对于每个
  • MySQL 5左连接未知列

    我有以下查询在 mysql 4 1 中工作 但在 5 0 中不起作用 SELECT FROM email e event email ee LEFT JOIN member m on m email e email WHERE ee ema
  • MySql 查询在选择中将 NULL 替换为空字符串

    如何用空字符串替换 select 中的 NULL 值 输出 NULL 值看起来不太专业 这是非常不寻常的 根据我的语法 我希望它能够工作 我希望能得到一个解释 为什么没有 select CASE prereq WHEN prereq IS
  • MySQL 中的断言

    我有一个针对大型数据库运行的 SQL 脚本 我想在开始时提出几个简单的查询 作为健全性检查 有没有办法在MySQL中写断言 或者任何类型的 选择 如果它与该值不匹配 则中止整个脚本 一些疯狂的代码 要点是 SET可能会引发 mysql 变量
  • PDO fetch() 失败时会抛出异常吗?

    有没有方法PDO语句 fetch http php net manual en pdostatement fetch php如果 PDO 错误报告系统设置为抛出异常 则在失败时抛出异常 例如 如果我设置 PDO ATTR ERRMODE g
  • 执行许多插入重复键更新错误:未使用所有参数

    所以我一直在尝试使用 python 2 7 15 使用 mysql connector 执行此查询 但由于某种原因 它似乎不起作用并且总是返回错误 并非所有参数都被使用 表更新有一个主键 即 ID 这是我尝试运行此 SQL 的查询 sql
  • 更改Docker容器中的mysql密码

    我如何更改 docker 容器中的 root 密码 因为一旦我停止 mysql 服务 容器就会自动停止 我应该停止 mysql 容器并部署一个新容器吗 您可以使用正在运行的容器更改它docker exec session https doc
  • php 崩溃后 mysql 表被锁定

    我有一个 MySQL DB 和一个 innoDB 表 我有一个 php 页面 用于连接 锁定表 进行一些更新 然后解锁表 PHP 页面通过 wamp 与 apache 一起提供 php页面将文件上传到数据库 我决定通过上传一个大小大于分配给
  • 如何使用实体框架设置连接字符串

    我将 EF6 与 MySQL 结合使用 并有一个用于多个数据库的模型 我希望能够在我的表单中设置连接设置 如何以编程方式设置模型的连接字符串 你应该使用EntityConnectionFactory这就是您所需要的 public strin
  • 如何打印Oracle中过程的定义?

    oracle中有没有办法查看过程的结构是什么 我正在尝试记录并运行程序 并希望将实际的程序结构存储在我的日志中 您可以查询ALL SOURCE table SELECT text FROM all source WHERE owner lt

随机推荐

  • 毕设——代码5中Keras TensorFlow配置

    问题 pip安装成功两个包后 cmd窗口进行python的import包操作正常 返回到pycharm环境中仍然报错ModuleNotFoundError No module named sklearn datasets 解决办法 step
  • Python基础知识学习:从零到100

    Python基础知识学习 从零到100 基础知识 1 变量 2 控制流 条件语句 3 循环 迭代器 4 列表 集合 数组 数据结构 5 字典 键值数据结构 6 迭代 遍历数据结构 7 类和对象 8 Python 面向对象编程模式 开启 9
  • ubuntu16.04 安装多版本cuda(原10.0,新安装10.1),实现任意切换

    TOC ubuntu16 04 安装多版本cuda 原10 0 新安装10 1 实现任意切换 前言 需求 单位需要使用yolo v5训练模型 可所需的pytorch对cuda的依赖版本较高 而仅仅安装单个高版本的cuda又会与原先的项目产生
  • 面试经典(14)--二叉树镜像

    题目描述 输入一个二叉树 输出该二叉树的镜像 分析与解法 使用先序遍历方式 如果节点是非叶子节点 就交换左子树和右子树指针 注意退出条件即可 掌握前序遍历这个题目解这道题目难度不大 代码如下 struct Node Node m pLeft
  • IMX6学习记录(17)-编译官方SDK,制作镜像,DD烧录

    上面是我的微信和QQ群 欢迎新朋友的加入 1 下载 地址 https www nxp com cn products processors and microcontrollers arm processors i mx applicati
  • 数据分析回头看2——重复值检查/元素替换/异常值筛选

    0 前言 这部分内容是对Pandas的回顾 同时也是对Pandas处理异常数据的一些技巧的总结 不一定全面 只是自己在数据处理当中遇到的问题进行的总结 1 当数据中有重复行的时候需要检测重复行 方法 使用pandas中的duplicated
  • 提高Python编程效率的十个技巧

    1 模块化编程 将代码拆分为模块和函数 提高可重用性和可维护性 合理组织代码 使其易于阅读和理解 2 利用Python标准库 Python标准库提供了众多功能强大的模块和工具 如os re和datetime等 熟悉并善于使用标准库可以加快开
  • PAT C入门题目-7-30 念数字 (15 分)(关于string.h头文件)

    7 30 念数字 15 分 输入一个整数 输出每个数字对应的拼音 当整数为负数时 先输出fu字 十个数字对应的拼音如下 0 ling 1 yi 2 er 3 san 4 si 5 wu 6 liu 7 qi 8 ba 9 jiu 输入格式
  • linux -- 命令行中大于号、小于号的用法

    语法 命令 lt 文件 这是将文件作为命令输入 命令 lt 文件1 gt 文件2 将文件1输入到命令中 然后将结果输出到文件2中
  • tensorflow各版本下载地址

    https pypi org project tensorflow gpu 1 13 0 files 把13改对你想要的版本 转载于 https www cnblogs com xpylovely p 11609250 html
  • 2022 re:Invent 凌云驭势 重塑未来

    2022年11月29日 一年一度的亚马逊 re Invent全球大会在拉斯维加斯再度上演 这是亚马逊云科技第11年举办re Invent 来自全球的5万多客户和合作伙伴参加了此次线下盛会 还有超过30万人线上参会 在此次大会上 亚马逊云科技
  • 埃斯顿服务器上电无显示,埃斯顿伺服常见现象报警及排除

    用户在试用埃斯顿伺服电机时可能会遇见以下的问题 在此我整理一下 希望能帮助到大家 一 过载报警A04 1 伺服电机的配线有误或配线有漏 1 电机U V W相线接错 2 伺服电机侧连接器的插入是否不良 2 伺服驱动器与电机的型号不匹配 检查驱
  • Android 内存泄漏的原因以及解决方案

    内存泄漏是什么 内存泄漏即 ML Memory Leak 指 程序在申请内存后 当该内存不需再使用 但 却无法被释放 归还给 程序的现象 内存泄漏的原因以及解决方案 内存泄漏的原因归根到底就是当需要被回收变量的内存被其他变量引用持有 导致内
  • 光照 (4) 镜面光贴图示例

    通过使用镜面光贴图我们可以可以对物体设置大量的细节 比如物体的哪些部分需要有闪闪发光的属性 我们甚至可以设置它们对应的强度 镜面光贴图能够在漫反射贴图之上给予我们更高一层的控制 step1 对镜面光贴图使用一个不同的纹理单元 见纹理 在渲染
  • 软考高级之系统架构师之项目管理

    今天是2023年09月06日 距离软考高级只有58天 加油 概念 临时性 是指每一个项目都有一个明确的开始时间和结束时间 临时性也指项目是一次性的 风险 风险具有以下特性 客观性 偶然性 相对性 社会性 不确定性 风险的四要素 事件 原因
  • 邮件服务器测试方法

    邮件服务器测试方法一 测试是在问题邮件服务器上完成的 二 登陆问题邮件服务器 使用nslookup命令查看需测试的邮件服务器域名解析记录 找到测试端的DNS可以解析到的MX记录 三 通过TELNET命令进行测试 一 TELNET需注意的事项
  • 什么是爬虫?爬虫的具体作用?

    什么是爬虫 答 爬虫的官方名字 spider 爬虫又被称之为网络蜘蛛 网络机器人等 就是模拟客户端发送网络请求 接收请求响应 按照一定的规则自动的抓取互联网信息的程序 爬虫的具体作用 答 数据采集 搜索引擎 软件测试 短信轰炸等等 一般是用
  • Web前端面试指导(三十八):js延迟加载的方式有哪些?

    题目点评 主要考察对程序的性能方面是否有研究 程序的性能是一个项目不断地追求的 通常也是项目完成后需要长期做的一件事情 像腾讯QQ依然对程序的性能不断地做优化 让用户的体验更好 性能优化的核心思想就是快 可以预先准备数据 如缓存的使用 可以
  • 使用C++ 编写嵌入式应用程序

    大多数嵌入式工程师使用C语言来编写Cortex M系列MCU 的程序 大家总觉得C 是用来编写Windows 或者Linux 应用程序的 特别是硬件工程师 也许压根就没有使用C 来编写程序 当我们阅读Mbed OS 的代码时却发现 许多是使
  • mysql--备份/主从同步/安装

    1 编写脚本 支持让用户自主选择 使用mysqldump还是xtraback全量备份 bin bash date date F sock S data mysql mysql3306 socket mysql sock dbdir back