安装配置维护MySQL系统.docx
- 文档编号:12794658
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:28
- 大小:46.49KB
安装配置维护MySQL系统.docx
《安装配置维护MySQL系统.docx》由会员分享,可在线阅读,更多相关《安装配置维护MySQL系统.docx(28页珍藏版)》请在冰点文库上搜索。
安装配置维护MySQL系统
安装、配置、维护MySQL系统
前言
本文将介绍如何安装,配置MySQL,使其易维护。
同时从一个MySQLDBA的角度,将数据库的日常维护、备份、恢复等事务与系统的安装配置联系起来,由于MySQL是一个OpenSource的系统,他的配置比较灵活。
系统文件、数据文件在安装的时候如何指定?
日志如何管理?
如何备份数据?
如何实现在线的完整数据备份?
如何恢复数据?
这些因素从安装、配置系统的时候就已经决定了。
所以,对于MySQL系统来说,好的安装规划模式就是日后整个系统稳定的基础。
同时将讲述在不同的情况下如何建立MySQL的同步数据库,如何实现在线的数据库备份。
下面,本文将以目前国内最流行的RedHatLinux(7.3)的系统为代表,讲述如何安装、配置一个容易维护的MySQL系统。
本文介绍的MySQL系统是以MyISAM数据库文件格式为基础的。
第一章如何规划Linux系统
本章我首先讲述如何安装RedHatLinux7.3,以及系统的分区规划。
第一节Linux系统的安装
由于RedHatLinux7.3的系统默认方式不支持ReiserFS系统,由于RedHatLinux支持的ext3文件系统的代码仍然处于测试阶段,而且在RedHatLinux7.3的Linux-2.4.18-3的核心中包含的ext3代码存在问题,工作在多CPU环境中,会导致系统的当机,为了我们的数据安全,我们需要使用相对成熟的ReiserFS系统,如何让RedHatLinux支持ReiserFS系统呢?
一个非常方便的引导参数,可以让RedHatLinux系统支持ReiserFS,同时还可以支持其他更多的文件系统。
从安装光盘引导安装过程,ft现以下提示:
Boot:
等待我们选择以何种方式安装系统的时候,我们输入:
linuxreiserfstext,选择字符安装界面,当然你也可以不输入text关键字,进入图形安装环境,然后我们按下回车。
Boot:
linuxreiserfstext
系统开始执行安装过程,显示欢迎安装界面、语言选择等界面,一一进行选择。
这里我们选择
Custom,自定义系统安装的组件。
第二节系统的分区规划
由于使用Lilo+ReiserFS的系统必须给/boot分区使用ext2文件系统,所以我们需要设置一个70MB的/boot。
这里我架设我们的系统已经做过Raid,不考虑磁盘I/O的性能问题。
对于建立Raid系统的一点说明:
微型数据库系统使用2块磁盘做Raid1(Mirror)小型数据库系统使用4块磁盘做Raid0+1
中小型系统使用6-8块磁盘做Raid5或者考虑I/O性能最大化使用Raid0+1
中型系统就要使用外置的磁盘柜了,一般使用Raid5。
此时数据库容量应该在1T左右了,超过此界限,建议不要使用MySQL作为数据库系统了,建议选用Oracle,DB2等系统,或者将当前数据库系统进行数据分割。
下面我给ft一个简单的分区规划
/boot(ext2)
70MB
/
200MB
/usr
2000MB
/usr/local
2000MB
/var
2000MB
/tmp
1000MB
Swap1(Swap分区的总容量要等于内存的容量)
512MB
Swap2(每个swap分区的大小建议不超过512MB)
512MB
/data(数据库文件所在分区)
数据文件分区的大小建议配置为日至文件分区的2倍
/log(日至文件所在分区)
分区完成,继续安装Linux系统。
第三节我应该安装哪些Linux组件?
对于一个专用的数据库服务器,我们不需要太多的应用,因此,只需要安装最简单的系统即可。
一个简化的系统安装内容只需要包括:
网络,开发工具,核心开发工具,兼容性软件包。
#setup
继续完成下面的安装。
进入系统,执行setup命令:
察看当前系统开启的服务,对于一个专用的数据库系统来说,开启sshd2、mysqld这两个应用服务足够了,另外你可能还需要打开几个系统服务:
crond,network,syslog。
其他的服务可以统统关掉了!
OK!
现在我们应该已经有了一个不错的RedhatLinux7.3的系统了!
让我们继续,开始配置MySQL
第二章编译你的MySQL,并且对它进行配置、优化
本章我们将开始安装MySQL,配置它,定制MySQL,让它与我们的Linux系统完全“兼容
”。
第一节取得最新的MySQL稳定版本,并建立MySQL账户
目前最新的MySQL版本是3.23.54a,我们从http:
//www.mysql.com上下载mysql-3.23.54a.tar.gz文件到/tmp目录。
使用最新稳定版本的MySQL,是系统将来稳定运行的基础。
建立专用的MySQL账户:
#useraddmysql
#cd/tmp
#tar–xzvfmysql-3.23.54a.tar.gz
#cdmysql-3.23.54a
#CFLAGS=-O6./configure\
--prefix=/usr\
--with-charset=gb2312\
--with-extra-charsets=all\
--without-bench\
--without-docs\
--with-mysqld-user=mysql\
--localstatedir=/data
#make
#makeinstall
使用专用的Mysql账户是为了保护系统的安全。
第二节解压缩,开始编译
这里我们使用了一个CFLAGS=-O6的编译优化参数,由于MySQL的代码在过渡优化的情况会产生问题(详细的说明请参考http:
//www.mysql.com的说明)如果编译生成的MySQL不能正常启动,请去掉或者使用-O5或者更小的数值进行编译优化。
这个配置中我们把mysql的命令行工具指定存放在/usr/bin目录,mysqld文件存放在/usr/libexec目录,数据库文件存放在/data目录。
基本字符集是GB2312,同时支持其他的字符集。
mysqld使用mysql用户权限启动。
如果上面的步骤没有任何问题的话,我们的MySQL就已经编译并且安装到系统了,接下来我们就要开始初始化MySQL的数据库了,建立基本的MySQL系统。
第三节初始化数据库,建立配置文件初始化数据库,并赋予mysql用户对目录/data的属主权限:
#cdscripts
#./mysql_install_db
#cd..
#chown–Rmysql:
mysql/data
让Linux系统启动的时候可以自动启动MySQL
#cdsupport-files
#cpmysql.server/etc/rc.d/init.d/mysqld
#chmod+x/etc/rc.d/init.d/mysqld
#chkconfig–addmysqld
#cd..
mysql的一些参数可以在配置文件中进行指定,也可以在启动的时候在命令行上指定,这里我们选择比较方便的参数文件,mysql的参数文件可以放在多个位置,位置不同,优先级也不一样,下表中列ft了他们之间的关系:
文件名
作用
/etc/mf
全局配置文件
DATADIR/f
库范围有效,如果你在一台机器安装多个mysql,希望给不同的mysql使用不同的配置文件,这就非常有用了。
Defaults-extra-file
扩展配置文件,在安装系统的时候通过—defaults-extra-file=#
来指定的配置文件。
~/.f
在用户的个人目录中的配置文件,如果你要建立一个供学生学习mysql的实验室环境。
或者提供虚拟主机用户一个独立的mysqlserver。
你可以尝试这个配置文件。
建立我们的f配置文件文件
#cdsupport-files
#cpmy-hf/etc/f
在support-files目录中有多个系统预先设置好的建议配置文件,每个配置文件的前几行说明了这个配置文件适用于什么样的系统(CPU数量,内存相关),请根据自己的机器配置进行选择,我们这里使用了huge的配置。
现在我们继续对缺省的配置文件进行进一步的优化:
如果你打算在MySQL中存入大量的二进制数据,或者是比较长的文本信息,需要设置max_allowed_packet这个参数,配置到16MB一般来说可以满足90%以上的各种应用了。
如果你没有这样的需求,请保留缺省值。
增加record_buffer数据记录缓存,sort_buffer排序缓存,以提高orderby,groupby的效率。
统计你的系统的表的数量,粗略估计一下会被频繁的访问的表的数量,如果这个数量大于512,你就应该考虑增加table_cache这个参数的值了。
如果你的系统是提供给一个web系统,作为数据存储的一部分,你就需要增加max_connections以保证你有足够的并发连接支持资源,响应来自webserver的请求。
把thread_concurrency设置成你CPU数量的两倍。
增加log-bin=/log/mysql-bin.log以支持mysql的日志系统,同时可以用它建立你的同步数据库。
打开log-slow-queries=/log/mysql-slow.log功能是十分明智的,这对我们查找、分析SQL语句的性能问题是十分有帮助的。
系统对执行时间超过8秒的SQL语句进行记录,如果你发现这个文件每天都在大幅度的增长,就有必要进行分析一下了。
等等,为什么这里是8秒?
而不是其他的什么?
哦,还记得有一个8秒钟规则吗?
对对,就是这个了!
当然,你也可以使用long_query_time参数来指定这个时间。
最后让我们来说说key_buffer这个参数,这个参数对系统的数据检索效率影响最大,尽可能的将这个参数设置的更大,但是不要超过1G以上。
对于系统的优化调整我会在以后的时间专门讨论,因为这很庞大,涉及各个方面的东西。
更多、更详细的信息还是请参考权威的官方文档。
下面我们给ft经过再次优化后,完整的/etc/mf的文件内容:
#Examplemysqlconfigfileforverylargesystems.
#
#Thisisforlargesystemwithmemoryof1G-2Gwherethesystemrunsmainly
#MySQL.
#
#Youcancopythisfileto
#/etc/ftosetglobaloptions,
#mysql-data-dir/mftosetserver-specificoptions(inthis
#installationthisdirectoryis/data)or
#~/.ftosetuser-specificoptions.
#
#Onecaninthisfileusealllongoptionsthattheprogramsupports.
#Ifyouwanttoknowwhichoptionsaprogramsupport,runtheprogram
#with--helpoption.
#ThefollowingoptionswillbepassedtoallMySQLclients[client]
#password=your_passwordport=3306
socket=/tmp/mysql.sock
#Herefollowsentriesforsomespecificprograms
#TheMySQLserver[mysqld]
port=3306
socket=/tmp/mysql.sockskip-locking
set-variable=key_buffer=384M
set-variable=max_allowed_packet=16M
set-variable=table_cache=512
set-variable=sort_buffer=8M
set-variable=record_buffer=8M
set-variable=thread_cache=8
set-variable=max_connections=2000
#TrynumberofCPU's*2forthread_concurrencyset-variable=thread_concurrency=4
set-variable=myisam_sort_buffer_size=64M
log-bin=/log/mysql-bin.log
server-id=1
log-slow-queries=/log/mysql-slow.log
OK!
现在让我们启动MySQL
我发现如果指定了slow-log,系统不能自动创建这个文件,至少在3.23.54a这个版本是这
样,所以我们需要手工创建这个文件。
#touch/data/mysql-slow.log
#chownmysql:
mysql/data/mysql-slow.log
#/etc/rc.d/init.d/mysqldstart
现在你可以建立你的数据库文件,库结构等所有的信息了,同时你会看到/data目录中产生了
log文件。
第三章MySQL的用户权限管理系统
本章我们将了解MySQL的用户权限管理系统,如何创建数据库的访问用户,以及如何分配权
限,MySQL提供了哪些权限可以让我们使用。
第一节MySQL的权限的分类
MySQL的权限大致分为4个等级:
全局级(GlobalLevel)
对象是所有库,权限的定义在mysql.user表中体现
库级(DatabaseLevel)
对象为指定库中的所有表,权限的定义在mysql.db,mysql.host表中体现
表级(TableLevel)
对象为指定表中的所有列,权限的定义在mysql.tables_priv
表中体现
列级(ColumnLevel)
对象为指定表中的单一列,权限的定义在
mysql.columns_priv表中体现
MySQL的权限种类列表:
权限(priv_type)
权限说明
ALL[PRIVILEGES]
所有权限但是没有赋予WITHGRANTOPTION
ALTER
允许使用Alter
CREATE
允许使用Create
DELETE
允许使用Delete
DROP
允许使用DropTable
FILE
允许使用SELECT...INTOOUTFILE与LOADDATAINFILE
INDEX
允许使用CREATEINDEX与DROPINDEX
INSERT
允许使用Insert
PROCESS
允许使用Show[FULL]Processlist,同时可以不受最大连接数限制
RELOAD
允许使用FlushTable
SELECT
允许使用Select
SHUTDOWN
允许使用mysqladminshutdown
UPDATE
允许使用Update
USAGE
允许连接MySQL,相当于没有任何权限的登陆
第二节用户的创建与权限的赋予权限赋予指令:
GRANTpriv_type[(column_list)][,priv_type[(column_list)]...]ON{tbl_name|*|*.*|db_name.*}
TOuser_name[IDENTIFIEDBY[PASSWORD]'encodedpassword'][,user_name[IDENTIFIEDBY'password']...]
[WITHGRANTOPTION]
如果使用了WITHGRANTOPTION参数,用户得到权限后可以将所获得的权限再赋予其他
人。
现在创建一个bbsuser的用户,赋予它从192.168.3.101使用密码bbstest访问bbs数据库中所有表的权限。
mysql>grantselect,insert,delete,updateonbbs.*tobbsuser@192.168.3.101identifiedby"bbstest";
缺省的GRANT赋予权限的用户,如果不存在,会自动创建,同时赋予USAGE权限第三节权限的收回
权限收回指令:
REVOKEpriv_type[(column_list)][,priv_type[(column_list)]...]ON{tbl_name|*|*.*|db_name.*}
FROMuser_name[,user_name...]
我们现在收回刚刚赋予权限的bbsuser用户的权限:
mysql>REVOKEselect,insert,deleteupdateonbbs.*frombbsuser@192.168.3.101;
SHOWGRANTSFORuser_name;
第四节查看权限查看指定用户权限的指令:
mysql>usemysql;
mysql>deletefromuserwhereHost="localhost"andUser="bbsuser";mysql>flushprivileges;
第五节删除用户删除用户需要直接操作系统库mysql
关于Flushprivileges,凡是直接操作系统库mysql,只有执行flush操作后修改才能生效。
在MySQL的权限分配系统里面ALL实际上是一个权限的集合。
第四章建立同步备份数据库
MySQL提供了数据库的同步备份功能,这对我们实现数据库的冗灾、备份/恢复、负载均衡等
都是有极大帮助的。
第一节配置一台同步数据库
同步数据库的硬件环境最好能够与主数据库完全一致,软件环境完全与主数据库相同的配置,可是按照前面的配置方法完成同步数据库的基本配置。
现在我们需要在/etc/f文件里面做些修改,使这台数据库成为同步数据库:
首先我们找到server-id,这个id是每一台数据库的唯一编号,在一个数据库同步系统里面编号不允许重复,我们现在把这个编号设置成2。
然后我们在下面增加几行:
master-host=主数据库的ip
master-user=数据同步专用账户名master-password=密码
master-port=主数据库的TCP/IP端口号
同时我们要去掉他的log-bin选项。
为了保护SLAVE端的mysql系统库,我们需要增加:
replicate-ignore-db=mysql
第二节给予同步权限,启动同步数据库我们现在回到主数据库,使用mysql工具连接到数据库:
#mysql–ulocalhost–uroot–pxxxxxxxx
>grantFILE,SELECTon*.*torepl@
>quit
我们建立了一个用户repl,对所有的数据库有FILE,SELECT权限,但是他只能通过
#/etc/rc.d/init.d/mysqldstart
#mysql–hlocalhost–uroot–pxxxxxxxx
>showslavestatus;
+-----------+-----------+---------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 安装 配置 维护 MySQL 系统