千家信息网

mysql数据库多种备份及读写分离搭建

发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,数据库的版本1.社区版2.企业版3.集群版数据库的安装1. 专用软件包管理器(二进制)deb 、rpm等mysql MySQL客户端程序和共享库mysql-server MySQL服务器需要的相关程序
千家信息网最后更新 2024年09月21日mysql数据库多种备份及读写分离搭建

数据库的版本

1.社区版

2.企业版

3.集群版

数据库的安装

1. 专用软件包管理器(二进制)

deb 、rpm等

mysql MySQL客户端程序和共享库

mysql-server MySQL服务器需要的相关程序

2. 源代码软件包(编译安装)

configure、cmake

数据库常用的配置选项

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql ----指定残可安装路径(默认的就是/usr/local/mysql)

-DMYSQL_DATADIR=/data/mysql ----mysql的数据文件路径

-DSYSCONFDIR=/etc ----配置文件路径

-DWITH_INNOBASE_STORAGE_ENGINE=1 ----使用INNOBASE存储引擎

-DWITH_ARCHIVE_STORAGE_ENGINE=1 ----常应用于日志记录和聚合分析,不支持索引

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 ----黑洞存储引擎

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 编译过程中取消一些存储引擎指令介绍

-DWITHOUT_FEDERATED_STORAGE_ENGINE=1

-DWITHOUT_PARTITION_STORAGE_ENGINE=1

-DWITH_READLINE=1 ----支持批量导入mysql数据

-DWITH_SSL=system ----mysql支持ssl会话,实现基于ssl的数据复

-DWITH_ZLIB=system ----压缩库

-DWITH_LIBWRAP=0 ----是否可以基于WRAP实现访问控制

-DMYSQL_TCP_PORT=3306 ----默认端口

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock ----默认套接字文件路径

-DENABLED_LOCAL_INFILE=1 ----是否启用LOCAL_INFILE功能

-DEXTRA_CHARSETS=all ----是否支持额外的字符集

-DDEFAULT_CHARSET=utf8 ----默认编码机制

-DDEFAULT_COLLATION=utf8_general_ci ----设定默认语言的排序规则

-DWITH_DEBUG=0 ----DEBUG功能设置

-DENABLE_PROFILING=1 ----性能分析功能是否启用

3. 服务:mysqld

4. 端口:3306

5. 主配置文件:/etc/my.cnf

6. 脚本:mysql_install_db

7. mysqld_safe

8. 数据目录:/var/lib/mysql

9. 套接字文件:/var/lib/mysql/mysql.sock

10. 当意外关闭数据库时,再开启时假如开启不了,找到这个,删除再启动

11. 进程文件:/var/run/mysqld/mysqld.pid

登录及退出mysql环境

a) 设置密码 mysqladmin -uroot password '123'

b) 登录 mysql -u 用户名 -p

-p 用户密码

-h 登陆位置(主机名或ip地址)

-P 端口号(3306改了就不是了)

-S 套接字文件(/var/lib/mysql/mysql.sock)

c) 退出 exit

d) 创建登录用户 create user 用户名@'%' identified by '密码'

e) 修改密码 set password=password('新密码')

setpassword for 用户@登录位置=password('新密码') - - - root用户为其他用户找回密码

当管理员把自己密码忘记了,怎么找回???

1)关闭数据库

2)修改主配置文件(/etc/my.cnf)<------ skip-grant-tables

3)启动数据库

4)空密码登录并修改密码

update mysql.user setpassword=password('新密码') where user='root';

5)删除skip-grant-tables,重启数据库验证新密码

SQL语句

关于库的操作:

Mysql命令

功能

show databases;

查看服务器中当前有哪些数据库

use 数据库名;

选择所使用的数据库

create database 数据库名;

创建数据库

drop database 数据库名;

删除指定的数据库

关于表的操作

MySQL命令

功能

create table 表名 (字段1 类型1,...);

在当前数据库中创建数据表

show tables;

显示当前数据库中有哪些数据表

describe 表名;

显示当前或指定数据库中指定数据表的结构(字段)信息

drop table 表名;

删除当前或指定数据库中指定的数据表

alter table 旧表名 rename 新表名;

修改数据表的名称

alter table 表名 modify 字段 类型;

修改字段的类型

alter table 表名 change 旧字段名 新字段名 类型;

修改字段

alter table 表名 add 字段 类型(first/after)

增加字段

alter table 表名 drop 字段

删除字段

MySQL命令

功能

insert into 表名(字段1,字段2,……) values(字段1的值, 字段2的值,……);

向数据表中插入新的记录

update 表名 set 字段名 =新数据 where 条件表达式;

修改、更新数据表中的记录

select 字段名1,字段名2……from 表名 where 条件表达式;

从数据表中查找符合条件的记录

select * from 表名;

显示当前数据库的表中的记录

delete from 表名 where 条件表达式;

between...and...

在数据表中删除指定的记录

指定范围

delete from 表名;

将当前数据库表中记录清空

注:库和表的删除用drop,记录删除用delete

权限

grant权限1,权限2,...... on 数据库.数据表 to 用户@登录位置 (identified by '密码');

revoke取消的权限1,取消的权限2,...... on 数据库.数据表 from 用户@登录位置;

showgrants for 用户@登录位置;

备份和还原

冷备份:把数据库关闭,离线备份(使用cp、tar等命令直接备份数据库所存放的目录)

FRM 结构

MYI 索引

MYD 数据

快照备份:(利用逻辑卷)

逻辑备份:

mysqldump

备份:mysqldump -u 用户名 -p 数据库名 > /备份路径/备份文件名(备份单个数据库)

mysqldump-u 用户名 -p 数据库名 表名 > /备份路径/备份文件名(备份数据表)

--databases库1,库2 (此时还原--->mysql< 备份文件)

--all-databases-备份服务器中的所有数据库内容

还原:mysql 数据库 < 备份文件

mysqlhotcopy

备份:mysqlhotcopy--flushlog -u='用户' -p='密码'--regexp=正则 备份目录

还原:cp-rpf 备份目录 数据目录(/var/lib/mysql)

补充的备份机制

1.日志备份

>mysqlshow global variables like '%log%'

列出mysql中和日志相关的变量

错误日志

服务器启动和关闭时的信息

服务器运行过程中的错误信息

从服务器启动从服务器进程时产生的信息

log-error 错误日志的路径

一般日志(不启用)

记录用户对数据库的查询操作

general-log=ON 启动一般查询日志

log=ON 全局日志开关

log-output 日志的记录类型

慢查询日志

记录需要较长时间的查询操作

log-slow-queries=保存路径 启动慢查询日志,并设置个路径

二进制日志

所有对数据库状态更改的操作(create、drop、update等)

log-bin=位置 启动二进制日志

>mysql show binary logs 查看当前使用的二进制日志

>mysqlshow binlog events in '二进制日志(mysql-bin.000001)' 查看二进制日志的内容

还原:(mysqlbinlog)

按时间还原:

mysqlbinlog --start-datetime 'YY-MM-DD HH:MM:SS'--stop-datetime 'YY-MM-DD HH:MM:SS' 二进制日志 | mysql(-urot -p)

按文件大小还原:

--start-position

--stop-position

事务日志:记录事务相关的日志信息

中继日志:记录从服务器的备份信息

2.多机备份

主从配置:实时备份

主主配置:(配置了2遍的主从)实时备份、负载均衡

多从一主:实时备份(更多的备份节点)

多主一从:实时备份、节约成本

实验

1.创建mysql的登录用户yzh可以登录mysql服务器

1.创建登录用户

# yum install mysql-server -y

# servicemysqld start

在另一台虚拟机上测试


创建的用户为自己更改密码

root用户为其他用户找回密码

root找回自己的密码并修改



数据库的增、删、改、查实验

创建数据库

创建数据表

复杂一点的,,,

插入数据

将表a2的数据复制到表a1

删除数据库

删除数据表

删除表里的数据记录

删除年龄在23-25之间的

修改表中的数据

修改数据表的名称

修改数据表的字段类型

修改数据表的字段

添加字段

删除字段

给用户授权

1.给用户全部权限

取消yzh用户的删除库、表、表中数据的权限

查看用户的权限

2.备份和还原数据库文件

单个备份命令mysqldump -uroot -p --databases ab > /ab.sql

多个数据库的备份,数据库之间用空格隔开

mysqldump -uroot -p --databases aa ab> /1.sql

1.把数据库aa备份到/root目录下

2.模拟数据库aa丢失(删除数据库aa)

3.还原

注:此处可以会报错,如下:

解决方法为:

A、修改配置文件添加 skip-grant-tables 跳过密码验证。进入mysql后再修改root密码,

B、删除配置文件中的skip-grant-tables ,重启服务用新密码再进入!

1.备份多个数据库(--databases)

2.还原

1.备份有规则的数据库

2.模拟数据库删除

3.还原

5.关于二进制日志还原(此处实验都没有成功,以后再试

开启二进制日志

查看二进制日志文件

按时间还原:

1.如果数据库中的bb库被删,需要还原

2.查看二进制日志内容

3.还原并查看


按文件大小还原:

还原到bb库被删除的数据状态

1.查看bb库被删除前后的文件大小

2.还原并查看

6.主从备份

前提条件:安装了mysql,开启了二进制日志

在主服务器上授权,从服务器保存授权的信息


之后在从服务器会产生授权信息文件

开启从服务器start slave,并查看

测试


7.主主备份(直接将实验6的主从反向再配置一遍,也可做主主备份),本实验增加的参数只是为了提高效率,在数据库数据庞大的情况下,效果显著。

1.以1为主,2为从配置一遍主从

a) 在主配置文件中配置一下(开启二进制日志和其他内容)

b) 在2上做相同的配置

c) 启动服务器

d) 在主服务器(1)上授权

e) 在从服务器(2)上保存授权信息

2.以2为主,1为从配置一遍主从

a) 在主服务器(2)上授权

b) 在从服务器(1)上保存授权信息

3.开启从服务器start slave,并查看

4.测试

8.多从一主

1.主服务器配置

a) 开启二进制日志,并开启mysql


b) 在主服务器上授权

2.从服务器配置

a) 开启二进制日志,并启动mysql


b) 保存授权信息

c) 在另一台从服务器上做相同的配置


d)测试

9.多主一从

1.主服务器配置

a) 开启二进制日志,启动服务


b) 授权


c) 在主服务器2上做相同的操作


2.从服务器操作

a) 对主配置文件操作

b) 初始化数据库,生成目录mysqla,mysqlb


c) 设置mysqla,mysqlb目录及以下文件的属主的权限为mysql(防止出现权限问题)

d) 启动从服务器线程


e) 登录并保存授权信


3.测试


10.读写分离

环境部署:

主服务器--192.168.115.191

从服务器--192.168.115.193

中间件服务器--192.168.115.192

中间件:一种提供在不同技术、不同的软件之间共享资源的程序

tomcat weblogic

数据库的中间件:mysql proxy (官方版本) 性能低,需要lua脚本

atlas 性能低,相应时间长

amoeba陈思儒研发的

一.先搭建一个主从关系的服务器

1.在主、从服务器上安装mysql mysql-server

2.开启二进制日志


3.在主服务器上授权,从服务器上保存授权信息,并开启从服务线程。

Master服务器


Slave服务器


二.配置读写分离 (192.168.115.192中间件服务器上配置

1.安装gcc环境(amoeba需要源码安装)

2.拷贝第三方软件,创建单独的目录


3.先安装jdk(amoeba是由java语言编写的,所以先安装jdk),配置java环境

声明用java写出来的程序如何调用(/etc/profile)手动添加内容

4.安装amoeba

a) 解压


b) 配置amoeba这个软件

.....区域

......区域


由于只提供了一个服务器模板,需要自己复制另一个填写关于读的(
直接复制64行到109行,插入在109行之后


修改下端的读写服务器

c)启动amoeba

修改一下启动脚本 vim /usr/local/amoeba/bin/amoeba

先在主服务器191上开启amoeba用户的授权(从服务器自动同步)

再在193的amoeba服务器上开启amoeba服务

nohup bash -x /usr/local/amoeba/bin/amoeba& 把这个放到后台 退出终端也可以继续运行

ps aux | grep amoeba 然后查看一下运行的程序查看到的话就说明程序已经运行了起来

三.测试(安装一个MySQL 软件包 才可以连接)

启动amoeba端的mysql服务 service mysqld start

使用配置文件中amoeba配置中的用户名和密码登录amoeba端的mysql服务


关闭从服务器的从同步功能

在主、从服务器上创建表a1,在主服务器的表中插入数据

之后在客户端登录测试::::

读取池的效果:

写入池效果

以上测试纯粹为了实验效果,在实际生产中,主从开启,主服务器上写入的数据也会同步到从服务器中。。。。。。


数据 服务 数据库 服务器 备份 日志 配置 用户 文件 字段 二进制 数据表 密码 登录 信息 权限 目录 路径 主从 测试 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 视频资源网站数据库设计 软件开发基础知识测试 免费数据库账号 蔡甸放心的软件开发企业 海康录像存储服务器保存天数设置 网络技术存在问题 大兴区提供软件开发专业服务 戴尔服务器虚拟化费用 江阴浪潮服务器维修价格 成都计算机软件开发要多少钱 tair 内存服务器 网络安全专员实习日志 模具软件开发价格 未明确其网络安全和监管职能 南京网络技术有哪些 服务器可以怎么升级固件 做软件开发什么都不懂 公司有必要用两个数据库吗 舟山电脑软件开发工具 太原APP商城软件开发 导航数据库编码规范图书 北京交友软件开发大概多少钱 数据库char必须带单引号 网络安全问题分析与设计论文 河北银丹互联网科技有限公司 服务器远程连接 excel三级分销数据库 关于使用网络安全的案例 网络技术与电子商务 永州软件开发程序员培训班学什么
0