接触linux已经有些年头了,一直在使用,一直在做笔记,但是从来没有真正的整理认识过,没有真正记住过,每次使用都是翻出以前的笔记照着抄一抄,要么就重新百度一下,按照网上的教程 *** 作一下。懵懵懂懂,知其然不知其所以然,最近正好要更换服务器重新部署,又要新的一轮笔记更新,突然想到放在自己笔记里的东西再有价值也只是一个人能体会到,借此机会把自己多年的经验(可能对外价值不是很大)整理一下,自己重新认识学习一遍,顺便分享给用得到的有缘人,希望我微不足道的经验给你在技术道路上能有点收获。
涉及到的内容没有系统性,只是针对我对自己常用的linux *** 作指令及重新部署系统环境所用指令自己的解读和看法,辅助理解和记忆(解读的不一定对,自己的的看法)。
备注:我的实际目录是usr/local/soft (其中soft是我自己新建的目录 )
1安装Yum Repository
[root@localhost ~]# wget >
1数据量太大,比如上亿,就用oracle,优点上亿数据对Oracle来说轻飘飘的,也不用太多优化配置,缺点安装比较麻烦,上手比较慢。
2数据量较大,比如千万级,用postgresql,它号称对标Oracle,处理千万级数据还是可以的,也是易学易用。
3数据量一般,比如百万级,用mysql,这个级别的数据量mysql处理还是比较快的。
4数据量较小,比如十万以下,sqlite、access都可以。
上面是基于单表 *** 作的数据量,你看着选。
简单易用的数据库哪个比较好?这个要具体看你的用途,如果数据量比较少(10万左右),追求简约简单,免费开源的sqlite就行,如果数据量比较多,考虑到高并发、分布式,可以使用专业的mysql、postgresql,下面我分别简单介绍一下,感兴趣的朋友可以尝试一下:
小巧灵活sqlite这是基于c语言开发的一个轻量级关系型数据库,短小精悍、免费开源,个人使用无需繁琐的配置,只需一个简单的运行库便可直接使用,针对各种编程语言都提供了丰富的API接口, java、 python、c#等都可轻松 *** 作,如果你存储数据量不多,只是本地简单的 *** 作(读多写少),可以使用一下这个数据库,占用内存非常少,轻便灵活,当然,在高并发、数据量大的情况下就不合适了:
专业强大mysql
这是目前应该广泛使用的一个关系型数据库,免费开源跨平台,在信息系统开发方面一直占据着主力位置,如果你从事于web开发或者网站后台建设,那么这个数据库一定非常熟悉,支持高并发、分布式,存储数据量相对于sqlite来说,更多也更安全,索引、触发器、存储过程等功能非常不错,支持数据导入导出、恢复备份,只要你熟悉一下基本使用过程,很快就能掌握和运用:
免费开源postgresql
这是加州大学计算机系开发的一个对象-关系型数据库(自由软件),免费、开源、跨平台,支持流计算、全文检索、图式搜索、并行计算、存储过程、空间数据、K-V类型,相比较mysql来说,在复杂查询、高并发下更稳定、性能更优越,可扩展性、可维护性非常不错,但也有劣势,例如新旧版本不分离存储,没有Coverage index scan等,总体使用效果来说还不错:
当然,除了以上3个数据库,还有许多其他数据库,像mssql、oracle等也都非常不错,对于存储和处理数据来说绰绰有余,只要你熟悉一下基本使用过程,很快就能入门的,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。
最符合初学者理解和入门的是Access,因为它和Excel本来就是一个套件,相互转化容易,复制粘贴即可,非常好理解库、表、字段、键的概念。
如果数据量不大,强烈推荐试试Filemaker,脚本化编程,自由定制输入界面、工作流程,非常便捷高效。
最近杀出来的airtable,更是简单高效,界面美观, *** 作与电子表格相当,发展势头也非常迅猛。
二者侧重点有所不同,用户可根据需要选择
作为一个软件开发人员,长期需要和数据库打交道,个人更加青睐于MySQL。虽然可能基于你的Excel原因,有些人会建议你使用Access数据库,但是基于我个人的 意见,我并不建议你那样做。采用MySql的具体理由如下:
1MySQL具有普遍性,在国内的环境中,绝大多数的互联网企业采用的是MySQL。有了广大的用户基础后,针对于各种问题网上也能更好地找到解决方案。
2MySQL相对于Oracle而言,更加轻量化,针对于从Excel量级的数据,没必要使用Oracle。同时MySQL是完全免费的,不用担心版权及费用问题,无论对个人还是对预算有限的企业而言都是很好的选择。
3MySQL高度兼容标准SQL,这对于以后迁移到其他数据库而言,也能很大程度地降低学习成本。
希望我的回答能够对你有所帮助!!![耶][耶][耶]
Excel办公确实便利,可以做一些简单的数据分析,但涉及大量复杂的数据运算,就会遇到和题主一样的问题,运算速度慢,如果主机性能不是很好,还有可能面临电脑死机,数据丢失等问题。
遇到这种情况,我们该如何解决呢?数据库的重要性显而易见!
现在, 我将用3分钟的时间,与您探讨该选择何种数据库,以及选择它的理由,是否有更优的解决方案呢?
MySQL数据库,90%的企业都会选择它数据库选得好,企业的数据安全,资产安全,也就得到了保障。那么该如何选择数据库呢?这个跟你的业务量和业务服务行业,密不可分。
如果你只是上班打卡,用SQL server就可以了;
如果你要储存会话信息,用户配置信息,购物车数据,建议使用NoSQL数据库;
不过90%的企业或个人,首选数据库都是MySQL数据库。
为什么这么说?因为,它集 低成本、高可用、可靠性强、易用性强、体积小、速度快开放源码 等特性于一身,所以在金融、财务、网站、 数据处理 等应用领域,它占据着独一无二的优势。
这也是几乎所有企业都选择它,来存储数据的原因。
加之MySQL数据库,支持多种存储引擎,支持大型数据库,可以处理成千上万条记录,还提供用于管理、检查、优化数据库 *** 作的工具。
因而,MySQL尤其受个人,以及中小企业的推崇。
虽然MySQL数据库简单易用,但我还是不会部署该怎么办?别担心,现在市面上已经出现了,一种自带数据库的新型办公软件。
比如说,云表企业应用平台,一款兼容excel功能,但功能更为强大的办公软件,它就内嵌了MySQL数据库。 (文末有免费获取方式)
云表内嵌的MySQL数据库,有何优点?1 性能更加优化,更加兼容系统。因为云表的研发人员,时刻更新维护MySQL数据库。
2 省去自己手动部署的麻烦。但如果你熟悉部署数据库,想把数据库改成Oracle或SQL server等数据库,也可以设置。(不过,我建议IT小白还是 “拿来即用” 就好)
3 快速实时计算。数据分析实时交互,完全满足管理决策中的临时性分析,多变的业务需求,以及频繁的结果刷新。
4 通过自带的内存计算引擎,无需事先建立CUBE,IT部门将告别报表延时报表分析,亿级数据秒级响应。
内嵌的MySQL数据库是否可靠云表不仅是一款办公软件,同时还是一款开发工具。
通过它,你将解决以下问题:
复杂的数据运算,精确到行列的权限管控,以及工作流,海量用户同时在线办公,数据透视,制作像销售单,洽谈合同等表单报表,一份制作,即可重复录用
你还可以通过它,与电子称、地磅等进行对接,与用友金蝶等三方系统集成,生成条形码,扫码出入库,生成移动端APP 基本上业务所需的功能,你都可以放心交给它做。
它最大的亮点就是,你可以 用使用excel的手法,用它来开发业务应用。
而且,可视化的 拖拉拽 之后,开发出来的ERP、WMS、OA、进销存等业务应用,还秉承了MySQL数据库增删改查的功能特性。
没错,用云表开发出来的业务应用,是允许二次开发的,而且功能可以随时增删改查,轻松满足大集团精细化的数据控制需求。
不过,大家最关心的应该是数据安全问题吧。
数据存放在云表内嵌的MySQL数据库,是安全不丢失的,它提供了多种数据存储的方式,本地部署,云端部署,混合部署,任君挑选!
正因如此,像 恒逸石化、许继电气、航天科工委、中铁、中冶、云南小松 等大型集团,才鼓励内部员工去学习云表。
篇幅所限,只说到这里,说太多你也不会看。
免费 的软获取方式在下方:
数据库的用处可大着呢,不仅可以实现数据共享,减少数据冗余度,还能实现对数据的集中控制,保持数据的一致性和可维护性。选取简单易用的数据库,你有什么好的建议呢,留言让我们看到噢!
题主强调了简单易用。所以推荐最简单三个。
1Access。
2Excel。
3飞书文档、腾讯文档、石墨文档等的表格。
如果要做分析,数据量才比较大,建议Access,还是专业的更好一些。网上教程也很多,比较容易学。而且建议用早一点的版本,比如2003或者2007,Access这些年微软一直想从office里去掉,奈何用的人还是很多,所以不敢去掉,但是采取了一种比较恶心的方法让用户放弃,就是每发布一个新版本,就去掉一些好用的功能,所以说Access是越早的功能越强。
还一个推荐就是Sql Server Express版本,是SQL Server的免费版本,不要钱,基本功能都有,要比sqllite等强大的多
这要结合你个人实际情况来定,有计算机基础,懂一点数据库的话那么市场上的那些软件都可以用,常用有oracle,sqlserver,mysql等,要上手快还是sqlserver比较快,界面 *** 作也比较直观;如果一点基础都没有,但是又要分析数据的话可以用微软自带的一个access,这个上手比较快。决定用哪一种之后还是要买点教材看,简单的sql查询要会,熟练之后也能提高工作效率。
个人使用数据库的话,只存数据不做分析,SQLite就足够了。
1 myeclipse导入项目后,如何把数据库也导入
MySQL数据库的导入,有两种方法:
1) 先导出数据库SQL脚本,再导入;
2) 直接拷贝数据库目录和文件。
在不同 *** 作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。
所以一般推荐用SQL脚本形式导入。下面分别介绍两种方法。
2 方法一 SQL脚本形式
*** 作步骤如下:
21 导出SQL脚本
在原数据库服务器上,可以用MyAdmin工具,或者mysqldump命令行,导出SQL脚本。
211 用MyAdmin工具
导出选项中,选择导出“结构”和“数据”,不要添加“DROP DATABASE”和“DROP TABLE”选项。
选中“另存为文件”选项,如果数据比较多,可以选中“gzipped”选项。
将导出的SQL文件保存下来。
212 用mysqldump命令行
命令格式
mysqldump -u用户名 -p 数据库名 >; 数据库名sql
范例:
mysqldump -uroot -p abc > abcsql
(导出数据库abc到abcsql文件)
提示输入密码时,输入该数据库用户名的密码。
22 创建空的数据库
通过主控界面/控制面板,创建一个数据库。假设数据库名为abc,数据库全权用户为abc_f。
23 将SQL脚本导入执行
同样是两种方法,一种用MyAdmin(mysql数据库管理)工具,或者mysql命令行。
231 用MyAdmin工具
从控制面板,选择创建的空数据库,点“管理”,进入管理工具页面。
在"SQL"菜单中,浏览选择刚才导出的SQL文件,点击“执行”以上载并执行。
注意:MyAdmin对上载的文件大小有限制,本身对上载文件大小也有限制,如果原始sql文件
比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可获得1:5或更高的压缩率。
gzip使用方法:
# gzip xxxxxsql
得到
xxxxxsqlgz文件。
提示输入密码时,输入该数据库用户名的密码。
3 直接拷贝
如果数据库比较大,可以考虑用直接拷贝的方法,但不同版本和 *** 作系统之间可能不兼容,要慎用。
31 准备原始文件
用tar打包为一个文件
32 创建空数据库
33 解压
在临时目录中解压,如:
cd /tmp
tar zxf mydbtargz
34 拷贝
将解压后的数据库文件拷贝到相关目录
cd mydb/
cp /var/lib/mysql/mydb/
对于FreeBSD:
cp /var/db/mysql/mydb/
35 权限设置
将拷贝过去的文件的属主改为mysql:mysql,权限改为660
chown mysql:mysql /var/lib/mysql/mydb/
chmod 660 /var/lib/mysql/mydb/
2 如何:添加对数据库项目的引用
可以添加对数据库项目的多种类型引用以应对不同的情况。
例如,可以引用同一解决方案中的其他项目,也可以引用其他解决方案的输出。按照略有不同的过程即可添加其他类型的引用。
例如,若要使用跨数据库引用,不仅必须添加该引用,还必须为数据库和/或服务器定义变量和相关的值。有关引用的类型以及可能使用每种类型的时间的更多信息,请参见在数据库项目中使用引用。
引用在同一解决方案中数据库项目中定义的对象打开一个解决方案,该解决方案包含要向其中添加引用的数据库项目。在“项目”菜单上,单击“添加数据库引用”。
将出现“添加数据库引用”对话框。若要添加对数据库项目的引用,请执行以下步骤:单击“当前解决方案中的数据库项目”。
在列表中,单击要添加对其引用的数据库项目。若要为服务器定义 SETVAR 变量,请执行以下步骤:单击“定义服务器变量”。
在“名称”中,键入表示该服务器的变量名称。在“值”中,键入该变量所表示的服务器名称。
注意如果所引用对象所属的数据库位于要添加对其引用的数据库所在的相同服务器上,则不需要定义服务器变量。若要为要引用的数据库指定 SETVAR 变量,请按下列步骤 *** 作:选中“定义数据库变量”复选框。
如果选中“文本”复选框,则将其清除。在“名称”中,键入表示该数据库的变量的名称。
在“值”中,键入该变量所表示的数据库名称。重要事项如果数据库项目包含显式引用另一个数据库中对象的对象,则应更新这些引用以使用刚刚定义的变量。
如果从包含跨数据库引用的数据库导入了对象,则必须更新这些引用以解决这些显式跨数据库引用导致的警告。若要为要引用的数据库指定文本值,请按下列步骤 *** 作:选中“定义数据库变量”复选框。
选中“文本”复选框。在“值”中,键入要引用的数据库的名称。
注意如果数据库名称始终与目标开发环境中的名称相同,则可能要指定文本而非变量和值对。例如,可以对“master”数据库中定义的对象使用值为“master”的文本。
如果所引用的项目可能引用另一个项目,则可以选中“禁止显示所引用项目中未解析引用导致的错误”复选框。所引用项目中的错误不大可能导致当前项目中的错误。
因此,可能要决定忽略这些错误。如果不想更新对象和脚本,则清除“更新现有架构对象定义和脚本以使用数据库引用变量”复选框,然后单击“确定”。
此时引用即添加到数据库项目,而您不需要在此过程中执行任何其他步骤。如果要更新对象和脚本,则选中“更新现有架构对象定义和脚本以使用数据库引用变量”复选框,然后单击“确定”。
此时将出现“预览更改 - 重命名服务器或数据库”对话框。(可选)如果不想应用一个或多个更改,则清除这些更改旁的复选框。
(可选)单击任意更改,在“预览更改”窗格中显示其详细信息。单击“应用”,更新所指定的对象和脚本。
此时引用即添加到数据库项目,并修改您指定的这些对象和脚本以使用 SETVAR 变量(而非服务器和数据库的名称)。引用另一个数据库项目的编译输出(dbschema 文件)中定义的对象打开一个解决方案,该解决方案包含要向其中添加引用的数据库项目。
在“项目”菜单上,单击“添加数据库引用”。将出现“添加数据库引用”对话框。
若要添加元文件的引用,请执行以下步骤:单击“数据库项目元文件(dbmeta)或架构(dbschema)”。在该框中,键入架构文件的路径和文件名,或者单击“浏览”指定要添加其引用的架构文件。
若要为服务器定义 SETVAR 变量,请执行以下步骤:单击“定义服务器变量”。在“名称”中,键入表示该服务器的变量名称。
在“值”中,键入该变量所表示的服务器名称。注意如果所引用对象所属的数据库位于要添加对其引用的数据库所在的相同服务器上,则不需要定义服务器变量。
若要为要引用的数据库指定 SETVAR 变量,请按下列步骤 *** 作:选中“定义数据库变量”复选框。如果选中“文本”复选框,则将其清除。
在“名称”中,键入表示该数据库的变量的名称。在“值”中,键入该变量所表示的数据库名称。
重要事项如果数据库项目包含显式引用另一个数据库中对象的对象,则应更新这些引用以使用刚刚定义的变量。如果从包含跨数据库引用的数据库导入了对象,则必须更新这些引用以解决这些显式跨数据库引用导致的警告。
若要为要引用的数据库指定文本值,请按下列步骤 *** 作:选中“定义数据库变量”复选框。选中“文本”复选框。
在“值”中,键入要引用的数据库的名称。注意如果数据库名称始终与目标开发环境中的名称相同,则可能要指定文本而非变量和值对。
例如,可以对“master”数据库中定义的对象使用值为“master”的文本。如果所引用的项目可能引用另一个项目,则可以选中“禁止显示所引用项目中未解析引用导致的错误”复选框。
所引用项目中的错误不大可能导致当前项目中的错误。因此,可能要决定忽略这些错误。
如果不想更新对象和脚本,则清除“更新现有架构对象定义和脚本以使用数据库引用变量”复选框,然后单击“确定”。此时引用即添加到数据库项目,而您不需要在此过程。
3 如何把原来做过的JAVA项目导入到另一台电脑里
当下载了包含Eclipse 项目的源代码文件后,我们可以把它导入到当前的Eclipse 工作区然后编辑和查看。点击菜单File > Import,然后在d出的Import 对话框中展开General目录,选择Existing Projects into Workspace,接着点击Next 按钮。当选中单选钮Select root directory:时可以点击Browse…按钮选中包含项目的文件夹,如果包含项目的话就可以在中间的Projects 列表框中显示;而当选中单选钮Select archive file:时可以点击Browse…按钮选中包含项目的ZIP 压缩包,如果包含项目的话就可以在中间的Projects列表框中显示。最后点击Finish 按钮就可以导入项目并打开了。
点击菜单File > Export,然后在d出的Export 对话框中展开General 目录,选择Archive File,接着点击Next 按钮。然后在To archive file:输出框中选中要保存的文件名,一般写成项目名zip,然后点击Finish 按钮即可导出当前项目。还有一种方式是手工打包,用WinRAR 或者WinZIP 等工具都可以
4 自己做的项目涉及到数据库,怎么样把这个项目上传到服务器上
MSSQL数据库:
直接给它提供dmf文件,他给你附加
现在的web空间服务商,他们都有数据库与web 容器在他们的服务器上的。你的项目挂在那,连的数据就相当于连的本地的,只是他在Tomcat的serverxml里面配置了(你可以去找 web项目部署服务器 相关资料)
总之,你给钱 这些东西不需要你去管 人家帮你搞定 。部署发布这块,感兴趣自己可以去学(部署这块也有研究的,比如:WEB程序自动安装--Tomcat+web项目+MySQL+jre 一起打包 exe发布,这样没有JDK环境的机器也照样运行你的项目 、还有你现在问的部署外网服务器等 )说了一大堆 分该给我了吧
5 如何将excel中的数据导入数据库
首先打开SQL SERVER 的企业管理器,到你要导入数据的数据库的表上右键,选择所有任务,导入数据。在d出的对话框上点击下一步。
选择数据源为EXCEL如图所示。
选择要导入的EXCEL文件
输入你的数据库的登入信息
选择第一个项目(从源数据库复制表和视图),然后点下一步
选择你要导入的表的第几页,其中目的表是可以修改的,如果要转换其中的数据,点后面的小方块,上面有三个小点的小方块。
点击下一步,完成,即可
数据导入很快的,导入的结果会反馈给你。点击完成。
刷新你的数据库,这个时候你可以发现你导入的数据表已经存在并可以使用了。
6 如何导入已有的外部数据库
导入已有的外部数据库的方法:
第一种是右击数据库,然后点击附加。出现下面的界面。然后选择添加,添加上你要添加的mdf文件即可。
第二种方法是:新建查询,然后输入下列语句,
EXEC sp_attach_db @dbname = 'yourdatabasename',
@filename1 = 'x:\路径\MSSQL\Data\pubsmdf',
@filename2 = 'x:\路径\MSSQL\DataLdf
MySQL在互联网应用中已经遍地开花,但是在银行系统中,还在生根发芽的阶段。本文记录的是根据某生产系统实际需求,对数据库高可用方案从需求、各高可用技术特点对比、实施、测试等过程进行整理,完善Mysql高可用方案,同时为后续开展分布式数据库相关测试做相应准备。
存储复制技术: 传统IOE架构下,常用高可用方案,靠存储底层复制技术实现数据的一致性,优点数据安全性有保障,限制在于是依赖存储硬件,实施成本较高。
keepalived+双主复制: 两台MySQL互为主从关系,即双主模式,通过Keepalived配置虚拟IP,实现当其中的一台数据库故障时,自动切换VIP到另外一台MySQL数据库,备机快速接管业务来保证数据库的高可用。
MHA: MHA部署在每台mysql服务器上,定时探测集群中的master节点,当master出现故障时,它可以自动将最新的slave提升为新的master,然后将所有其他的slave重新指向新的master,优点在最大程度保证数据的一致性的前提下实现快速切换,最少需要3台服务器,存在数据丢失的可能性。
PXC: Percona eXtra Cluster是Percona基于galera cluster封装的集群方案。不同于普通多主复制,PXC保障强一致性和实时同步,故障切换更快。但是也需要3个节点,配置相对复杂,对性能也稍有影响。
除了上述方案外,还有MMM、Heartbeat+DRBD等高可用方案,此处不做详细介绍。
综合评估下,本次实施采用了 keepalived+mysql双主实现数据库同城双机房的高可用。MySQL版本为: 5721。 *** 作系统:Red Hat Enterprise Linux Server 73。
配置过程如下:
Mysql-master1: IP地址1 --以下简称master1
Mysql-master2: IP地址2 --以下简称master2
Mysql-vip : VIP地址 --应用连接使用
Mysql复制相关概念描述:
1、 Mysql主从复制图示:
2、 Mysql主从复制过程描述:
(1)master记录二进制日志:在每个事务更新数据完成之前,master在二进制日志记录这些改变。MySQL将事务写入二进制日志。在事务写入二进制日志完成后,master通知存储引擎提交事务。
(2)slave将master的binarylog拷贝到自己的中继日志:首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事务,如果已经同步了master,它会睡眠并等待master产生新的事件。I/O线程将这些事务写入中继日志。
(3)SQL slave thread处理该过程的最后一步:SQL线程从中继日志读取事务,并重放其中的事务而更新slave的数据,使其与master中的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小。
主主同步就是两台机器互为主的关系,在任何一台机器上写入都会同步至备端。
为了便于后续数据库服务器的扩展,且在整个复制环境中能够自动地切换,降低运维成本,引入了当前主流的基于Mysql GTID的复制特性,工作原理及优缺点简介如下。
3、 GTID工作原理简介:
(1) master更新数据时,会在事务前产生GTID,一同记录到Binlog日志中。
(2) slave的I/O线程将变更的binlog写入到本地的relay log中。
(3) slave的sql线程从relay log中获取GTID,然后对比slave端的binlog是否有记录。
(4) 如果有记录说明该GTID的事务已经执行,slave会忽略。
(5) 如果没有记录,slave就会从relay log中执行该GTID的事务,并记录到binlog。
(6) 在解析的过程中会判断是否有主键,如果有就用索引,如果没有就用全部扫描。
4、 GTID优点:
(1) 一个事务对应一个唯一的ID,一个GTID在一个服务器上 只会执行一次。(2) GTID是用来替代传统复制的方法,GTID复制与普通复制模式的最大不同就是不需要指定二进制文件名和位置。
(3) 减少手工干预和降低服务故障时间,当主机宕机之后会通过软件从众多的备机中提升一台备机为新的master。
5、 GTID也存在一些限制:
(1) 不支持非事务引擎。
(2) 不支持create table … select 语句复制(主库直接报错)。
(3) 不允许一个sql同时更新一个事务引擎表和非事务引擎表。
(4) 在一个复制组中,必须要求统一开启GTID或者是统一关闭GTID。
(5) 开启GTID需要重启(57版本除外)。
(6) 开启GTID后,就不再使用原理的传统复制方式。
(7) 不支持create temporary table 和 drop temporary table语句。
(8) 不支持sql_slave_skip_counter。
前置条件:
主备两个节点使用行内统一的安装部署脚本安装mysql5721介质(略)
Master1端创建应用的数据库(略)
1、 修改MySQL配置文件
参考相关配置规范,分别设置master1、master2的mycnf文件,
其中server-id参数设置为不同值;
由于后续keepalived会挂起VIP,应用通过VIP连接数据库,为了避免应用程序无法通过VIP访问,需将两个节点的bind-address参数注释掉;
2、 设置master1端自动半同步模式
Mysql的同步模式主要有如下3种:
a 主从同步复制:数据完整性好,但是性能消耗略高;
b 主从异步复制:性能消耗低,但容易出现不一致;
c 主从半自动复制:介于上述两种之间,既保持了数据的完整性,又提高了性能;
基于上述特性,建议采用半自动同步模式,由于后续要配置为双主模式,因此任一节点其角色既为master又为slave,因此相关的master/slave插件要同时配置,过程如下。
(1) 首先查看库是否支持动态加载(默认都支持)
(2) 主从库上分别安装插件
作为主库,安装插件semisync_masterso
作为从库,安装插件semisync_slaveso
(3) 安装完成后,从plugin表中能够看到刚刚安装的插件
(4) 分别打开主从库半同步复制
同时添加到各自的mycnf中,在后续数据库实例重启时自动加载该配置。
此时查看状态还没有启动
(5) 两个节点分别启动IO进程
(6) 查看半同步状态
3、 将master1设为master2的主服务器
(1)在master1主机上创建授权账户,允许在master2主机上连接
(2)将主库master1数据导出
(3)将mastersql传输到master2上并导入
(4)在master2端将master1设置为自己的主库,并开启slave功能
在master2上查看slave状态
至此master1到master2的主从复制关系已经建立完成。
4、 将master2设为master1的主服务器
在master1上执行
在master1上查看slave状态
1、keepalived相关概念说明:
keepalived是集群管理中保证集群高可用的一个软件解决方案,其功能类似于heartbeat,用来防止单点故障
keepalived是以VRRP协议为实现基础的,VRRP全称VirtualRouter Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip,master会发组播(组播地址为2240018),当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master,这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core 、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责 健康 检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。同时为了避免出现脑裂,应关闭防火墙或者开启防火墙但允许接收VRRP协议。
2、keepalived的安装配置
(1)配置本地yum源,在master1和master2两台服务器上安装keepalived的相关依赖包Kernel-devel/openssl-devel/popt-devl等
配置指向rhel-75iso的yum本地源,步骤略
注意:如不知道keepalived需要哪些依赖包,可到下载后的源码解压目录下查看INSTALL 文件内容,安装需要的依赖包,源码安装任何一个软件都要养成查看源码包文档的习惯,比如INSTALL,README,doc等文档,可以获得很多有用的信息。
(2)在两台mysql上解压缩并编译安装keepalived
(3)master1、master2上分别配置keepalivedconf
注意上图红色字体中两个节点配置相同处及差异。
说明:keepalived只有一个配置文件keepalivedconf,里面主要包括以下几个配置区域:
· global_defs:主要是配置故障发生时的通知对象以及机器标识。
· vrrp_instance:用来定义对外提供服务的VIP区域及其相关属性。
· virtual_server:虚拟服务器定义
(4)同时两个节点上都需要添加检测脚本
作用:是当mysql停止工作时自动关闭本机的keeplived服务,从而实现将故障主机踢出热备组,因每台机器上keepalived只添加了本机为realserver,所以当mysqld正常启动后,我们还需要手动启动keepalived服务。
(5)分别启动两个节点的keepalived服务
检查两个节点keepalived启动进程
检查两个节点的vip挂载情况
(6)主备机故障切换测试
停止master2的mysql服务,看keepalived 健康 检查程序是否会触发脚本,自动进行故障切换,步骤略
查看master1节点的VIP挂载情况,验证是否实现了自动切换,步骤略
说明在master2服务器的mysql服务发生故障时,触发了脚本,自动完成了切换。
(7)现在我们把master2的mysql服务开起来,并且keepalived的服务也需要启动。
即便master2的mysql服务和keepalived服务都重新开启了,master1仍然是主master了,master2未对主master的权利进行抢夺,说明设置的nopreempt参数生效了,为了保证群集的稳定性,生产环境不允许抢占配置,只有当master1的mysql服务坏掉的时候,master2才会再次成为主master,否则它永远只能当master1的备份。(注:nopreempt一般是在优先级高的mysql上设置)
Sysbench是一个模块化的、跨平台、多线程基准测试工具,可用于评估数据库负载情况,通过sysbench命令配置IP地址、端口号、用户名、密码连接到指定的数据库db1中,创建多个表,并快速插入指定条数的记录,观察主备库同步效率
(1) 下载开源工具sysbench-041214targz,放置在相应目录下并解压
(2) 使用iso配置本地yum源并安装Sysbench如下的依赖包(步骤略):autoconf/automake/cdbs/debhelper(>=9)/docbook-xml/docbook-xsl/libmysqlclient15-dev/libtool/xsltproc
(3) 编译sysbench
编辑配置文件/etc/ldsoconf中添加mysql lib目录/mysql/app/5721/lib,并执行命令ldconfig生效
(4) 执行sysbench压测
使用sysbench工具向主节点的db1数据库中创建5张表,并且每张表分别插入10万条记录
同时观察备机同步效率
几个重要的参数说明:
B、半自动同步模式、异步模式切换测试
(1) 检查主备同步状态,及同步参数设置
rpl_semi_sync_master_enabled参数表示启用半同步模式;
rpl_semi_sync_master_timeout参数单位为毫秒,表示主库事务等待从库返回commit成功信息超过10秒就降为异步模式,不再等待从库,等探测到从库io线程恢复后,再返回为半自动同步;
rpl_semi_sync_master_wait_no_slave参数表示事务提交后需要等待从库返回确认信息;
(2) 将slave的io线程停止
(3) 使用sysbench向master写入少量的数据,本例创建一张表,并插入10条记录,命令包装在1sh测试脚本中
通过记录的时间戳发现,master在等待了slave10秒无响应,自动切换为异步模式,将数据写入本地。
(4) Slave启动io线程,数据自动追平
至此MySQL主主复制配置完成,运行在半自动同步模式,通过keepalived实现Mysql的HA高可用。
上线后应符合统一的标准监控策略,添加备份协议对数据进行周期备份并保存到带库中,以及定期的数据恢复测试。
由于是靠keepalived实现的高可用,还应将如下资源添加到监控管理平台:
1、 对每台数据库主机的3个keepalived进程进行监控;
2、 对主备节点的io线程、sql线程工作状态进行监控;
以上就是关于CentOS8下安装mysql8全部的内容,包括:CentOS8下安装mysql8、easytest项目如何部署、简单易用的数据库哪个比较好等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)