Linux:配置 MySQL 数据库服务器
此 vm 节点将您的数据存储在 RDBMS 中,例如 mysql 或 postgresql。在此设置中,我将使用 MySQL 数据库服务器。您需要在IP 地址为192.168.1.13的vm04上键入以下命令。
安装 mysql 服务器
输入以下yum 命令在基于 RHEL/Centos Linux 的系统上安装mysql 数据库服务器:
# yum install mysql mysql-server
配置 mysql 服务器
编辑 /etc/my.cnf,输入:
# vi /etc/my.cnf
确保可以从 vm01 和 vm02 服务器(即 Apache+php5 服务器)访问 mysql 服务器。找到 [mysqld] 部分并添加/更正以下内容,以便可以远程访问 mysqld:
# Make sure skip-networking directive is commented (or removed) # skip-networking # Turn on remote access bind-address=192.168.1.13
优化设置
您需要优化 mysql 服务器,否则它将占用 vm04 上的所有 CPU 和其他资源。您可以按如下方式添加或更正设置(有关详细信息,请参阅mysql 手册):
####################################################################### # WARNING!!! # Security and optimization settings # Read mysqld and my.cnf man page for more info # as the following settings depends upon hardware and your requirements ######################################################################## # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 ## Go faster and skip some stuff, YMMV skip-name-resolve skip-slave-start skip-external-locking # PER CLIENT SETTINGS # # bit high but I got tons of ram here # sort_buffer_size = 2M read_buffer_size = 2M binlog_cache_size = 1M wait_timeout = 200 interactive_timeout = 300 max_allowed_packet = 12M thread_stack = 128K table_cache = 1024 myisam_sort_buffer_size = 1M tmp_table_size = 12M max_heap_table_size = 12M # LOGGING # log_queries_not_using_indexes = 1 slow_query_log = 1 slow_query_log_file = /var/lib/mysql/slowquery.log # CACHES AND LIMITS # tmp_table_size = 12M max_heap_table_size = 12M query_cache_type = 1 query_cache_limit = 2M query_cache_size = 32M max_connections = 500 thread_cache_size = 50 open_files_limit = 65535 table_definition_cache = 4096 table_open_cache = 1024 # MyISAM # key_buffer_size = 32M myisam_recover = FORCE,BACKUP # SAFETY # max_allowed_packet = 16M max_connect_errors = 1000000 # BINARY LOGGING # log_bin = /var/lib/mysql/mysql-bin expire_logs_days = 14 sync_binlog = 1 # INNODB # innodb_flush_method = O_DIRECT innodb_log_files_in_group = 2 innodb_log_file_size = 256M innodb_flush_log_at_trx_commit = 1 innodb_file_per_table = 1 innodb_buffer_pool_size = 10G
保存并关闭文件。重新启动/重新加载 mysql 服务器:
验证 mysqld 是否在 tcp 端口 #3306 上运行:
# chkconfig mysqld on
# service mysqld start
# service mysqld reload
# service mysqld restart
# netstat -tulpn | grep :3306
MySQL 数据库服务器防火墙配置
编辑/etc/sysconfig/iptables,输入:
# vi /etc/sysconfig/iptables
确保 vm01 和 vm02 可以访问数据库服务器:
## open mysqld server port for the apache and lighttpd web server # -A INPUT -m state --state NEW -s 192.168.1.10 -m tcp -p tcp --dport 3306 -j ACCEPT -A INPUT -m state --state NEW -s 192.168.1.11 -m tcp -p tcp --dport 3306 -j ACCEPT
保存并关闭文件。重新启动 iptables,输入:
# service iptables restart
增加 vm04 数据库服务器上的文件系统和端口限制
对于繁忙的 RDBMS 服务器,您需要增加系统文件描述符(FD 限制)和IP 端口限制:
# Increase system file descriptor limit to fs.file-max = 50000 # Increase system IP port limits net.ipv4.ip_local_port_range = 2000 65000
通过输入以下sysctl 命令来加载更改,以在运行时修改 Linux 内核参数:
# sysctl -p
创建 MySQL 数据库和账户
本节提供手动创建 MySQL 数据库的基本说明。在此示例中,按如下方式创建 mysql 数据库和用户:
- 数据库名称:foo
- 数据库用户名:bar
- 数据库密码:我的密码
- 允许来自以下主机的数据库访问:localhost、vm01 和 vm02,仅具有 IP 地址 192.168.1.10 和 192.168.1.11
键入以下命令来创建数据库和所需的用户:
# /usr/bin/mysql -u root -h localhost -p
在 mysql> 提示符下键入以下命令。要创建名为 foo 的数据库,请键入:
mysql> CREATE DATABASE foo;
您必须向名为 bar 的 MySQL 用户授予此数据库的访问权限,Apache+php5 应用程序服务器将通过该用户进行连接。输入:
mysql> GRANT ALL ON foo.* TO bar@localhost IDENTIFIED BY 'mypassword'; mysql> GRANT ALL ON foo.* TO bar@192.168.1.10 IDENTIFIED BY 'mypassword'; mysql> GRANT ALL ON foo.* TO bar@192.168.1.11 IDENTIFIED BY 'mypassword';
要退出 MySQL 监视器,请输入:
mysql> quit
现在,您可以使用 .sql 文件创建表或加载数据。您可以通过编写 shell 或 perl 脚本来添加 mysql 用户和数据库,从而自动完成此过程。
从远程 vm01 或 vm02 测试新的数据库和用户设置
通过 SSH 进入 vm01 或 vm03 并输入以下命令来测试来自 Apache / Lighttpd Web 服务器的连接:
$ mysql -u bar -h 192.168.1.13 -p'mypassword' foo
或
$ mysql -u bar -h vm04 -p'mypassword' foo
phpMyAdmin
phpMyAdmin程序充当 MySQL 的 Web 界面。它用于使用浏览器通过 WWW 管理 MySQL。PhpMyAdmin 可以管理整个 MySQL 服务器或单个数据库。这是推荐给所有新 MySQL 数据库用户和管理员的软件包。