来源:自学PHP网 时间:2015-04-16 10:50 作者: 阅读:次
[导读] 本文讲述MySQL的Master Slave集群安装和配置,安装的版本是最新的稳定版本GA 5 6 19。为了支持有限的HA,我们使用Master Slave简单的读写分离集群。有限的HA是指当Master不可用时,数据不会丢...
本文讲述MySQL的Master/Slave集群安装和配置,安装的版本是最新的稳定版本GA 5.6.19。 为了支持有限的HA,我们使用Master/Slave简单的读写分离集群。有限的HA是指当Master不可用时,数据不会丢失,但在Master宕机的情况下是不可写的,必须手工处理故障。如果要支持更高的可用性,可以使用两台Master来做热切换。 Master和Slave的MySQL安装是相同的,只是my.cnf的配置不同,需要配置二进制日志文件复制。 没有特殊说明,命名中带#的为root用户操作,带$的为mysql Linux用户的操作。 安装准备1. 在安装MySQL前,需要确认下面的系统软件已经安装在Linux中。
# groupadd mysql # useradd -g mysql mysql # passwd mysql 3. 准备安装目录 创建MySQL安装目录,并赋权限给mysql用户: # mkdir /usr/local/mysql-5.6.19 # chown mysql:mysql /usr/local/mysql-5.6.19 # chmod -R 770 /usr/local/mysql-5.6.19 4. 创建MySQL数据存储目录: # mkdir /data # mkdir /data/mysql # chown mysql:mysql /data/mysql 5. 授权MySQL解压源码目录/usr/local/src目录的可执行权限给所有用户: # chmod -R 757 /usr/local/src 安装MySQL1. 解压缩安装包: $ cd /usr/local/src $ tar -xzvf mysql-5.6.19.tar.gz 2. 配置MySQL编译参数 $ cd /usr/local/src/mysql-5.6.19 $ cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.19\ -DMYSQL_DATADIR=$MYSQL_DATA_PATH\ -DSYSCONFDIR=/usr/local/mysql-5.6.19/conf\ -DDEFAULT_CHARSET=utf8\ -DDEFAULT_COLLATION=utf8_general_ci\ -DWITH_READLINE=1\ -DWITH_INNOBASE_STORAGE_ENGINE=1\ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1备注: -DCMAKE_INSTALL_PREFIX: 配置MySQL的安装目录。 -DMYSQL_DATADIR: 配置MySQL的数据目录。 -DSYSCONFDIR: 配置MySQL的配置文件目录。 -DDEFAULT_CHARSET: 默认字符集。 -DDEFAULT_COLLATION:设定默认语言的排序规则。 -DWITH_READLINE:支持批量导入mysql数据。 -DWITH_INNOBASE_STORAGE_ENGINE:使用INNOBASE存储引擎。 -DWITH_ARCHIVE_STORAGE_ENGINE:常应用于日志记录和聚合分析,不支持索引。 -DWITH_BLACKHOLE_STORAGE_ENGINE:黑洞存储引擎。 -DWITH_PERFSCHEMA_STORAGE_ENGINE:性能模式引擎。3. 执行make $ make $ make install 4. 修改myql用户的环境变量,增加MYSQL_HOME,并把bin加到PATH: $ vi ~/.bash_profile 在文件中增加蓝色字体部分:
$ source ~/.bash_profile 初始化MySQL1. 安装service脚本 # cp /usr/local/mysql-5.6.19/support-files/mysql.server/etc/init.d/mysqld # chown mysql:mysql/etc/init.d/mysqld # chmod 700 /etc/init.d/mysqld 2. 创建mysql权限数据库 $ $MYSQL_HOME/scripts/mysql_install_db--basedir=$MYSQL_HOME --datadir=/data/mysql 3. 创建PID文件目录 $ mkdir $MYSQL_HOME/var 4. 为master配置my.cnf my.cnf格式不正确,很容易在启动时错误,最好在原有文件的基础上通过vi工具在linux上修改。 如果文件已经损坏,可以通过默认的模板中拷贝: $ cp $MYSQL_HOME/support-files/my-default.cnf$MYSQL_HOME/my.cnf 编辑my.cnf $ vi $MYSQL_HOME/my.cnf 在文件中增加蓝色字体部分:
5. 为slave配置my.cnf 和master的配置文件一样进行修改,但注意文件中的log文件名、datadir和server_id等内容不同。 编辑my.cnf $ vi $MYSQL_HOME/my.cnf 在文件中增加蓝色字体部分:
6. 启动MySQL 启动和停止master和slave都完全一样。 $ service mysqldstart 通过下面命令查看是否启动成功: $ service mysqldstatus 7. 停止MySQL $ service mysqld stop 管理MySQL安全性默认MySQL的root的用户密码为空,为了提高安全性,应该设置root用户一个安全的密码。 在服务器上通过mysql用户打开MySQL客户端:$ mysql –u root 设置一个安全的密码: mysql> SET PASSWORD FORroot@localhost=PASSWORD('secret'); 配置Master和Slave之间的复制1. 创建执行复制的MySQL用户 在Master上创建一个复制用户,其中secret为用户的密码: mysql> CREATEUSER repl_user IDENTIFIED BY 'secret'; 并赋给复制权限: mysql>GRANTREPLICATION SLAVE ON *.* TO repl_user; 2. 锁定Master并获取二进制日志位置值 获取读锁: mysql> FLUSH TABLES WITHREAD LOCK; 显示当前二进制文件名及位置值: mysql> SHOW MASTER STATUS;3. 通过mysqldump工具获取Master数据快照 在另外一个会话中在Master上执行: $ mysqldump -u root-p --all-databases --master-data > data_dump.sql 执行后,保存在当前目录中。4. 释放Master上的读锁 在获取读锁的会话中,执行释放锁命令: mysql> UNLOCK TABLES;5. 导入dump数据到Slave中 通过scp拷贝data_dump.sql到Slave的机器上。 $ scp data_dump.sqlmysql@<ip of slave>:/home/mysql 在Slave上通过下面的命令导入到Slave的MySQL中。 $ mysql –u root -p mysql> source data_dump.sql;6. 配置Master和Slave之间的复制 mysql> CHANGE MASTER TO MASTER_HOST='<ip or hostame of master>', MASTER_USER='repl_user', MASTER_PASSWORD='secret', MASTER_PORT = 3306, MASTER_LOG_FILE='master-bin.000003', MASTER_LOG_POS=881; 上面的MASTER_LOG_FILE和MASTER_LOG_POS需要配置6.2中查询到的信息。<ipor hostame of master>是Master的IP或主机名。 启动Slave:mysql> START SLAVE; 7. 验证Master和Slave的状态 在Master上执行: mysql> SHOW MASTER STATUS;在Slave上执行: mysql> SHOW SLAVE STATUS;上面信息显示没有任何错误,Slave_IO_State信息为‘Waitigfor master to send event’,说明复制连接配置OK。 至此,两个MySQL的Master/Slave模式的集群已经部署成功,可以在Master上执行数据更新操作,发现可以正常复制到Slave上。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com