3.2 系统配置
所有系统安装完毕之后,需要对它们做一些必要的配置方可按照用户预先设计的结构模型实现具有负载均衡功能的MySQL服务器集群。
3.2.1 FreeBSD操作系统配置
(1). 调整内核参数,优化操作系统性能
因为是处于生产环境的服务器,投入正常运行之前一定要对内核参数进行必要的调整,提升系统性能,加强稳定性。简要说就是去掉不必要的硬件支持选项,使新内核占用更少的内存,加快启动速度。不同机器硬件系统差异很大,用户可根据具体系统的硬件情况不断调整试验,最终定制出最优化、最安全的FreeBSD系统。一定要屏蔽掉组合键Ctrl+Alt+Del的热重启功能,防止用户误按Ctrl+Alt+Del重启系统,引起数据库系统服务意外中断。在内核配置文件如MYKERNEL中加入:
options SC_DISABLE_REBOOT
重新编译系统内核,重启后即可屏蔽Ctrl+Alt+Del组合键的热重启功能。如何定制新内核及重新编译FreeBSD系统,用于可参考FreeBSD系统手册,此不赘述。
(2). 进行其它设置,增强系统安全性
用户可根据以下一般安全准则设置自己的FreeBSD系统。
·选择一个好的密码并予以妥善保护。
·对于敏感文件采用适当安全等级的加密算法进行加密。对于敏感级别不是很高的文件采用系统自带的crypt工具加密;对于敏感度极高的文件则使用专用加密工具,如PGP、GPG进行不对称加密,提高加密文件的防攻击能力。
·仔细设置文件访问权限,达到保护文件目的。
·保护好自己的.profile文件。恰当设置.profile文件的访问权限,确保只有自己能访问。
·仔细维护已设置setuid或setgid标志位的任何程序。
·禁止不加防范地离开已注册终端。任何时候都必须按常规正常退出系统,先执行clear清屏命令,防止其它用户看到操作痕迹,再执行exit命令退出终端。
·防范特洛伊木马程序。正确设置PATH变量的检索顺序,确保系统目录位于当前目录的前面。
·防范病毒的入侵。
·监控最近一次注册时间,确保没有他人盗用自己的帐号。
特别提示:对于生产环境的服务器,一定要保证服务器的物理安全,安全措施再完善的系统,一旦被入侵者物理接触,所有的安全措施将形同虚设!
Unix系统安全是一个很大的课题,本文只是提及了一些最肤浅的常识,具体内容用户可以参考相关书籍或网上资源。为确保Unix系统的配置具有高度的安全性,可以使用Internet安全中心(Center for Internet Security,CIS)提供的安全测试工具Benchmarks或评估工具Scoring Tools,检验和监控系统配置的安全性 [4]。
3.2.2 MySQL数据库系统配置
为了能使上述系统实现一对多的主从复制(replication)和冗余机制,还需要对以上四个MySQL服务器进行一些必要的配置。
(1). 配置主机名和IP地址
本实现方案中把MySQL服务器Master主机名设为FreebsdMaster,IP地址配置为192.168.1.100,其它三台Slave依次设为FreebsdSlave1,192.168.1.101;FreebsdSlave2,192.168.1.102;FreebsdSlave3,IP地址192.168.1.103。
(2). 设置root用户密码
MySQL的root用户初始密码为空,为保证系统安全必须为root用户设置密码:
[root@FreebsdMaster /]# /app/mysql5/bin/mysql –uroot –p
Enter password:
mysql>SET PASSWORD=PASSWORD(‘secret’);
同Unix系统一样,输入密码时屏幕没有任何回显,进入系统后执行SET PASSWORD SQL语句设置或修改MySQL root用户密码。为使应用系统服务器远程连接到MySQL数据库服务器,除本地root用户以外,还要设置一个能从用户内部网络其它终端登录的root用户。具体操作如下:
mysql>USE mysql;
mysql>UPDATE user SET Host=’%’ WHERE Host=’hostname.yourdomain’ AND User=’root’;
mysql>flush privileges;
完成上述操作后应用系统服务器就可以连接到MySQL数据库服务器进行各种操作了,这个远程root用户的初始密码为空,用户需要从远程终端登录,为其设置密码。
(3). 开启MySQL服务器的二进制更新日志功能
上述MySQL服务器安装完成后,安装程序没有生成my.cnf配置文件,为此用户需要手工添加/etc/my.cnf文件。MySQL服务是由/app/myql5/libexec/mysqld提供的,其寻找my.cnf配置文件的默认顺序为/etc/my.cnf,~/.my.cnf,/usr/local/mysql/etc/my.cnf。启动ee编辑器,# ee /etc/my.cnf,在Master机器的配置文件写入如下内容:
[mysqld]
log-bin=mysql-master-bin
server-id=1
在其它三台Slave机器的配置文件/etc/my.cnf文件写入如下内容:
[mysqld]
server-id=int
其中,int为一大于1且互不相等的正整数,如2,3,4等。务必要正确设置每个机器上的/etc/my.cnf配置文件,尤其是server-id不能有重复,这是一对多数据库复制能否成功的关键[5]!
设定好上述/etc/my.cnf文件后启动Master上的MySQL数据库服务时就自动开启了二进制更新日志功能。在Slave上启动MySQL时要加上--log-bin参数,即可开启二进制更新日志功能。在Slave机器上启动MySQL服务的命令如下:
# /app/mysql5/bin/mysqld_safe --user=mysql --log-bin &
这样做的目的为了实现冗余容错功能。当主服务器Master出现故障停止服务时,在预转换角色成为Master的Slave上执行STOP SLAVE; RESET MASTER SQL语句,在其它两台Slave上执行CHANGE MASTER TO SQL语句,执行STOP SLAVE; RESET MASTER SQL语句的Slave服务器即转换成新的Master,其余两台机器则从新的Master复制数据库数据(复制的是更新UPDATE、INSERT等操作,并不是简单的copy),从而实现冗余容错。