快速业务通道

mysql 主从复制读写分离实现

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-09

mysql主从复制 (一)安装mysql(主从服务器皆相同) 先创建用户 useradd mysql -s /sbin/nologin tar zxvf mysql-5.0.45.tar.gz cd mysql-5.0.45 ./configure --prefix=/usr/local/mysql --localstatedir=/opt/data --with-extra-charsets=utf8,gb2312,gbk --with-pthread --enable-thread-safe-client 注:配置过程指定数据文件的位置及另加的字符集. make make install cp support-files/my-large.cnf /etc/my.cnf cd /usr/local/mysql chgrp -R mysql . 生成基本的数据库和表: /usr/local/mysql/bin/mysql_install_db --user=mysql 成功执行后察看数据目录/opt/data,看是否有文件或目录生成. chown -R mysql:mysql /opt/data 记得给每个数据库设置root密码. (二)修改配置文件 不同的地方就是server-id,主服务器配置文件不用修改,从服务器的配置文件server-id=10.其他的内容基本相同. (三)启动服务 /usr/local/mysql/bin/mysqld_safe --user=mysql& 这个过程主辅服务器都相同. (四)授权(在主服务器上进行) GRANT REPLICATION SLAVE ON *.* to ''rep1''@''192.168.8.100 identified by ''mylqs''; (五)查询主数据库状态(主服务器上进行) mysql> show master status; ------------------ ---------- -------------- ------------------
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
------------------ ---------- -------------- ------------------
| mysql-bin.000003 | 235 | | |
------------------ ---------- -------------- ------------------
记下file及position的值,后面做从服务器操作的时候需要用. (六)配置从服务器 mysql> change master to master_host=''192.168.8.101'', master_user=''rep1'', master_password=''mysql'', master_log_file=''mysql-bin.000003'', master_log_pos=235; 正确执行后再执行: mysql> start slave; 就启用了复制功能.这里我们运行一下 mysql> show slave statusG 来检查一下,一个正常的输出结果应该如下面的形式:
mysql> show slave statusG *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.8.101 Master_User: rep1 Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000003 Read_Master_Log_Pos: 235 Relay_Log_File: -relay-bin.000009 Relay_Log_Pos: 235 Relay_Master_Log_File: mysql-bin.000003 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 235 Relay_Log_Space: 235 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 1 row in set (0.00 sec)
mysql代理安装配置 一、安装mysql-proxy.需要按下列顺序安装其所依赖的包: (一)安装LUA tar zxvf lua-5.1.tar.gz cd lua-5.1 用vi修改Makefile,使"INSTALL_TOP=/usr/local/lua",这样做的目的是为了是lua的所有文件都安装在目录/usr/local/lua/ make posix make install (二)安装 libevent tar zxvf libevent-1.1a.tar.gz cd libevent-1.1a ./configure --prefix=/usr/local/libevent make make install (三)安装check tar zxvf check-0.8.4.tar.gz cd check-0.8.4 ./configure make make install (四)设置安装mysql-proxy所需的环境变量.把下面的内容追加到/etc/profile中 export LUA_CFLAGS="-I/usr/local/lua/include" LUA_LIBS="-L/usr/local/lua/lib -llua -ldl" LDFLAGS="-L/usr/local/libevent/lib -lm" export CPPFLAGS="-I/usr/local/libevent/include" export CFLAGS="-I/usr/local/libevent/include" 然后执行 source /etc/profile (安装完mysql-proxy不再需要这些变量,可以删除之) (五)安装mysql(只安装mysql客户端即可) tar zxvf mysql-5.0.45.tar.gz cd mysql-5.0.45 ./configure --prefix=/usr/local/mysql --without-server make make install (六)安装mysql-proxy tar zxvf mysql-proxy-0.5.0.tar.gz cd mysql-proxy-0.5.0 ./configure –prefix=/usr/local/mysql-proxy --with-mysql=/usr/local/mysql --with-lua Make Make install 二、主要的命令行选项 --help-all显示所有的帮助选项 --admin-address=host:port 管理主机及端口,默认是4041 --proxy-address=host:port 代理服务器的监听地址及端口,默认4040 --proxy-read-only-address=host:port 只读连接时,代理服务器的监听地址及端口.默认4042 --proxy-backend-addresses=host:port连接真实服务器的地址及监听端口,默认是3306,这是mysql代理最重要的选项,多个主机之间用空格隔开.使用rr算法. --proxy-lua-script=file指定lua脚本的名称 三、使用方法 2mysql服务器的情形
--proxy-backend-addresses=mysql_ip1:3306 --proxy-backend-addresses=mysql_ip2:3306
3个服务器的情形:一个主服务器,负责写入;2个从服务器,负责查询.
mysql-proxy --proxy-read-only-address=<slave_ip1>:3306 --proxy-read-only-address=<slave_ip2>:3306
配置验证 1、主从复制测试:在主数据库服务器上创建库和表,然后再插入记录,再登陆到从服务器,看是否也建立相一致的库和表以及记录.
mysql> create database first_db; Query OK, 1 row affected (0.01 sec) mysql> create table first_tb(id int(3),name char(10)); Query OK, 0 rows affected (0.00 sec) mysql> insert into first_tb values (001,''myself''); Query OK, 1 row affected (0.00 sec) 在主数据服务器的表first_db中插入记录
现在转到从数据库服务器,看是否同步了上面主数据库的数据
mysql> show databases; -------------------- | Database | -------------------- | information_schema | | first_db | | mysql | | test | -------------------- 4 rows in set (0.01 sec) 数据库自动生成了 mysql> use first_db;
Database changed mysql> show tables;
--------------------
| Tables_in_first_db |
--------------------
| first_tb |
--------------------
1 row in set (0.00 sec) 表也自动生成了 mysql> select * from first_tb;
------ --------
| id | name |
------ --------
| 1 | myself |
------ --------
1 row in set (0.00 sec) 记录也按照我们的意愿存在了
2、读写分离:用mysql客户端程序如mysql登陆到mysql代理,然后执行读写操作,以测试读写分离的正确性.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号