全部博文(535)
分类: LINUX
2011-03-31 15:22:30
安装指南 翻译:飞鸿无痕 转载请注明出处!http://blog.chinaunix.net/u3/93755/showart.php?id=2379392 由于本人英语水平不是很好,翻译难免有错误,如果有翻译错误的地方,请指出,谢谢!
注意:本指南只是一个草稿,如果你觉得有些地方需要改善、扩展或者修正的话,你可以随意更改。本指南所描述的是基于Debian
Lenny (5.0)平台的mysql-mmm2的安装(不包含mmm
tools)。
Master1的基本配置 首先我们在所有的主机上安装mysql aptitude install mysql-server 然后我们修改/etc/mysql/my.cnf文件的配置,加入以下行,确保所有的主机使用的不同的server id: server_id = 1 log_bin = /var/log/mysql/mysql-bin.log log_bin_index = /var/log/mysql/mysql-bin.log.index relay_log = /var/log/mysql/mysql-relay-bin relay_log_index = /var/log/mysql/mysql-relay-bin.index expire_logs_days = 10 max_binlog_size = 100M log_slave_updates = 1 read_only = 1
删除下面这行: bind-address = 127.0.0.1 当然要配置绑定到你的ip上: bind-address = 然后为了让我们更改的配置文件生效需要重启下mysql服务: /etc/init.d/mysql restart
创建用户 现在我们来创建需要的用户,我们需要创建3个不同的用户
创建用户语句的代码如下: GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'192.168.0.%' IDENTIFIED BY 'monitor_password'; GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO 'mmm_agent'@'192.168.0.%' IDENTIFIED BY 'agent_password'; GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.0.%' IDENTIFIED BY 'replication_password'; 注意:就以上这些允许用户连接的主机而言我们可以设置更多的限制,比如mmm监控主机是从192.168.0.10连接的,mmm代理和复制是从192.168.0.11 - 192.168.0.14连接的,
服务器之间的数据同步 我们假定db1上的数据是正确的。假如你有一个空的数据库,你仍然需要同步我们刚才创建的些帐号。 首先,当我们创建备份的过程中必须保证没有人更改数据库上的数据: (db1) mysql> FLUSH TABLES WITH READ LOCK; 然后获取二进制日志文件目前的位置,我们一会在设置db2、db3和db4主从复制的时候要用到: (db1) mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 374 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) 先不要关闭这个mysql命令行模式。假如你关闭了它,那么刚才设置的数据库锁定就会被解锁,因此你需要再开启一个终端,并输入: 现在我们可以对数据库解除锁定了,在上面第一个mysql命令行输入: (db1) mysql> UNLOCK TABLES; 复制刚才的数据库备份到db2, db3 and db4: db1$ scp
/tmp/database-backup.sql db1$ scp
/tmp/database-backup.sql db1$ scp
/tmp/database-backup.sql 然后将备份导入到db2, db3 and db4: db2$ mysql -u root -p < /tmp/database-backup.sql db3$ mysql -u root -p < /tmp/database-backup.sql db4$ mysql -u root -p < /tmp/database-backup.sql 然后刷新db2, db3 and db4的权限,我们更改了user表,所以mysql要重新读取这个表 (db2) mysql> FLUSH PRIVILEGES; (db3) mysql> FLUSH PRIVILEGES; (db4) mysql> FLUSH PRIVILEGES; 在debian和ubuntu中,从db1复制/etc/mysql/debian.cnf文件中的密码到db2、db3和db4,这个密码是用来启动和停止数据库的 现在所有的数据库的数据都是一致的了,我们可以开始设置主从复制来保持数据一致的状况了!
设置同步 通过下面的命令设置在db2, db3和db4上的复制 (db2) mysql> CHANGE MASTER TO master_host='192.168.0.11', master_port=3306, master_user='replication',
master_password='replication_password', master_log_file=' (db3) mysql> CHANGE MASTER TO master_host='192.168.0.11', master_port=3306, master_user='replication',
master_password='replication_password', master_log_file=' (db4) mysql> CHANGE MASTER TO master_host='192.168.0.11', master_port=3306, master_user='replication',
master_password='replication_password', master_log_file=' 请在 然后用以下命令启动3个主机上的slave进程 (db2) mysql> START SLAVE; (db3) mysql> START SLAVE; (db4) mysql> START SLAVE; 现在用一下命令检查所有主机上的复制是否正常 (db2) mysql> SHOW SLAVE STATUS\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.0.11 Master_User: replication Master_Port: 3306 Connect_Retry: 60 … (db3) mysql> SHOW SLAVE STATUS\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.0.11 Master_User: replication Master_Port: 3306 Connect_Retry: 60 … (db4) mysql> SHOW SLAVE STATUS\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.0.11 Master_User: replication Master_Port: 3306 Connect_Retry: 60
现在我们要设置db1从db2上复制,首先我们要确定master_log_file 和 master_log_pos的值: (db2) mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 98 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) 我们用下面的命令配置db1上的复制: (db1)
mysql> CHANGE MASTER TO master_host = '192.168.0.12', master_port=3306,
master_user='replication',master_password='replication_password',master_log_file=' master_log_pos= 请在 启动从进程 (db1) mysql> START SLAVE; 检查db1上的复制是否正常 (db1) mysql> SHOW SLAVE STATUS\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.0.12 Master_User: Master_Port: 3306 Connect_Retry: 60 … 所有的复制应该已经ok了,试着在db1和db2上插入数据,然后看看会不会同步更新到所有的节点上去。
MMM安装 创建用户 可选的:创建MMM脚本和配置文件的所有者,这将能为安全地管理监控脚本提供更简单的方法。
useradd --comment "MMM Script owner" --shell /sbin/nologin mmmd
监控主机 首先安装依存包: aptitude install liblog-log4perl-perl libmailtools-perl liblog-dispatch-perl libclass-singleton-perl libproc-daemon-perl libalgorithm-diff-perl libdbi-perl libdbd-mysql-perl 和mysql-mmm-monitor*.deb文件,并安装它们: dpkg -i mysql-mmm-common_*.deb mysql-mmm-monitor*.deb
数据库主机 首先安装依存包: aptitude install liblog-log4perl-perl libmailtools-perl liblog-dispatch-perl iproute libnet-arp-perl libproc-daemon-perl libalgorithm-diff-perl libdbi-perl libdbd-mysql-perl 接下来取得最新版本的mysql-mmm-common*.deb 和mysql-mmm-agent*.deb文件,并安装它们: dpkg -i mysql-mmm-common_*.deb mysql-mmm-agent_*.deb
配置MMM 所有的配置选项都集合在了一个叫/etc/mysql-mmm/mmm_common.conf的单独文件中,系统中所有主机的该文件内容都是一样的: active_master_role writer
cluster_interface eth0
pid_path /var/run/mmmd_agent.pid bin_path /usr/lib/mysql-mmm/
replication_user replication replication_password replication_password
agent_user mmm_agent agent_password agent_password
ip 192.168.0.11 mode master peer db2
ip 192.168.0.12 mode master peer db1
ip 192.168.0.13 mode slave
ip 192.168.0.14 mode slave
hosts db1, db2 ips 192.168.0.100 mode exclusive
hosts db1, db2, db3, db4 ips 192.168.0.101, 192.168.0.102, 192.168.0.103, 192.168.0.104 mode balanced
不要忘记了拷贝这个文件到所有的主机(包括监控主机)!
在数据库主机上我们需要编辑/etc/mysql-mmm/mmm_agent.conf文件,根据其他主机的不同更改db1的值(db2就将db1更改成db2): include mmm_common.conf this db1
在监控主机上我们需要编辑/etc/mysql-mmm/mmm_mon.conf文件: include mmm_common.conf
ip 127.0.0.1 pid_path /var/run/mmmd_mon.pid bin_path /usr/lib/mysql-mmm/ status_path /var/lib/misc/mmmd_mon.status ping_ips 192.168.0.1, 192.168.0.11, 192.168.0.12, 192.168.0.13, 192.168.0.14
monitor_user mmm_monitor monitor_password monitor_password
debug 0
ping_ips选项是通过ping这些ip来确认监控机的网络连接是正常的,我配置的是我的交换机(192.168.0.1)和其他四台数据库服务器。
启动MMM 启动代理 (在数据库服务器上)编辑/etc/default/mysql-mmm-agent来开启代理 ENABLED=1 然后启动它: /etc/init.d/mysql-mmm-agent start
启动监控 (在监控服务器上)编辑/etc/default/mysql-mmm-monitor文件来开启监控 ENABLED=1 然后启动它: /etc/init.d/mysql-mmm-monitor start 等待几秒钟mmmd_mon启动,在几秒钟后你可以用mmm_control来检查群集的状态 mon$ mmm_control show db1(192.168.0.11) master/AWAITING_RECOVERY. Roles: db2(192.168.0.12) master/AWAITING_RECOVERY. Roles: db3(192.168.0.13) slave/AWAITING_RECOVERY. Roles: db4(192.168.0.14) slave/AWAITING_RECOVERY. Roles: 因为这是第一次启动,所以我们的监控还不知道我们的主机,因此会设置所有主机的状态为AWAITING_RECOVERY并且会记录一条警告信息! mon$ tail /var/log/mysql-mmm/mmmd_mon.warn … 2009/10/28 23:15:28 WARN Detected new host 'db1': Setting its initial state to 'AWAITING_RECOVERY'. Use 'mmm_control set_online db1' to switch it online. 2009/10/28 23:15:28 WARN Detected new host 'db2': Setting its initial state to 'AWAITING_RECOVERY'. Use 'mmm_control set_online db2' to switch it online. 2009/10/28 23:15:28 WARN Detected new host 'db3': Setting its initial state to 'AWAITING_RECOVERY'. Use 'mmm_control set_online db3' to switch it online. 2009/10/28 23:15:28 WARN Detected new host 'db4': Setting its initial state to 'AWAITING_RECOVERY'. Use 'mmm_control set_online db4' to switch it online.
现在我们设置我们的主机为在线状态(db1最先,因为其他的主机是从db1复制更新的!): mon$ mmm_control set_online db1 OK: State of 'db1' changed to ONLINE. Now you can wait some time and check its new roles! mon$ mmm_control set_online db2 OK: State of 'db2' changed to ONLINE. Now you can wait some time and check its new roles! mon$ mmm_control set_online db3 OK: State of 'db3' changed to ONLINE. Now you can wait some time and check its new roles! mon$ mmm_control set_online db4 OK: State of 'db4' changed to ONLINE. Now you can wait some time and check its new roles!
官方文档链接:
由于放到博客是格式有的有点乱,欢迎下载doc文档阅读! http://blogimg.chinaunix.net/blog/upfile2/101103085239.rar
|