温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-07-17 23:52:15 来源:网络 阅读:635 作者:夜风狂1102 栏目:数据库

数据库的版本

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                           

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

在另一台虚拟机上测试

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


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

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

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

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

root找回自己的密码并修改

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

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


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

创建数据库

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

创建数据表

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

复杂一点的,,,

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

插入数据

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

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

将表a2的数据复制到表a1

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

删除数据库

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

删除数据表

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

删除表里的数据记录

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

删除年龄在23-25之间的

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

修改表中的数据

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

修改数据表的名称

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

修改数据表的字段类型

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

修改数据表的字段

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

添加字段

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

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

删除字段

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

给用户授权

1.给用户全部权限

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

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

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

查看用户的权限

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

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

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

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

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

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

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

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

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

3.还原

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

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

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

解决方法为:

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

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

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

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

2.还原

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

1.备份有规则的数据库

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

2.模拟数据库删除

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

3.还原

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

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

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

开启二进制日志

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

查看二进制日志文件

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

按时间还原:

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

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

2.查看二进制日志内容

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

3.还原并查看

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


按文件大小还原:

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

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

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

2.还原并查看

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

6.主从备份

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

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

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

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


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

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

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

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

测试

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

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

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

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

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

b)    在2上做相同的配置

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

c)    启动服务器

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

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

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

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

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

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

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

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

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

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

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

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

4.测试

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

8.多从一主

1.主服务器配置

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

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


b)    在主服务器上授权

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

2.从服务器配置

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

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


b)    保存授权信息

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

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

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

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


d)测试

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

9.多主一从

1.主服务器配置

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

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

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

b)   授权

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

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

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

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


2.从服务器操作

a)   对主配置文件操作

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

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

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

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


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

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

d)   启动从服务器线程


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

e)   登录并保存授权信

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

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


3.测试

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


10.读写分离

环境部署:

主服务器——192.168.115.191

从服务器——192.168.115.193

中间件服务器——192.168.115.192

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

tomcat  weblogic

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

atlas 性能低,相应时间长

amoeba陈思儒研发的

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

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

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

2.开启二进制日志

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


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

   Master服务器

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


Slave服务器

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

 

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

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

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

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

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


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

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

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

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

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

4.安装amoeba

a)   解压


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

b)   配置amoeba这个软件

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

<server>.....</server>区域

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

<dbServerList>......</dbServerList>区域

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


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

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


修改下端的读写服务器

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

c)启动amoeba

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

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

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

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

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

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

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

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

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

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

    启动amoeba端的mysql服务 service mysqld start

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

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

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


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

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

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

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

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

读取池的效果:

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

写入池效果

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

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


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI