[转帖]mysql数据库读写分离_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2324 | 回复: 0   主题: [转帖]mysql数据库读写分离        上一篇   下一篇 
liuliying930406
注册用户
等级:中校
经验:2027
发帖:210
精华:0
注册:2018-10-9
状态:离线
发送短消息息给liuliying930406 加好友    发送短消息息给liuliying930406 发消息
发表于: IP:您无权察看 2019-9-11 10:46:54 | [全部帖] [楼主帖] 楼主

 两个数据库的IP地址:

 Master IP:192.168.0.100
Slaves IP:192.168.0.101


1. Master数据库在my.ini(linux my.cnf)中添加的配置

 server-id = 1
log-bin=mysql-bin                #开启主服务器二进制日志记录
binlog-do-db=YNedut        #需要同步的数据库名,可写多行
binlog-ignore-db=mysql      #不需要同步的数据库名,可写多行
max_allowed_packet = 32M         #两台服务器同步时允许传递的包大小


2.    Master上运行下面的命令

grant replication slave on *.* to 'admins'@'192.168.0.101' identified by '123’;


         备注:在master中为slaves授权
                    A. 账号:admins
                    B. 密码:123
                    C. 授权的ip地址为:192.168.0.101
3.  查看master数据库的状态

Mysql> show master status;
+------------------+----------+--------------+------------------+
| File      | Position| Binlog_Do_DB|Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| MySQL-bin.000001 |  107 |       |         |
+------------------+----------+--------------+------------------------+--------------------------------+


4.    Master遇到问题的解决方案

reset master; //重置 master;
flush logs;//重置过后 show master status;中的MySQL-bin.000001
//的序号加1= MySQL-bin.000002。


5. Slaves数据库在my.ini(linux my.cnf)中添加的配置

 server-id=2   #必须跟master不一样
max_allowed_packet = 32M         #两台服务器同步时允许传递的包大小


6. Slaves上运行下面的命令

change master to master_host='192.168.100',master_user='admins',master_password='123',
MASTER_LOG_FILE='MySQL-bin.000001',MASTER_LOG_POS=107;


        备注:MASTER_LOG_FILE='MySQL-bin.000001',MASTER_LOG_POS=107;为show master status;查询
出来的状态值。
7. Slaves上运行下面的命令启动数据同步

 Mysql> slave start;


8. Slaves上遇到问题的解决方案

 A. slave stop;
B. reset slave; //解决server_errno=1236;
C. Mysql> show slave status;//查看主从复制的状态


              备注:如果看到error表示没有同步成功,查看MYSQL日志找到错误原因
              存放mysql数据文件的地址下的计算机名.err。/usr/local/mysql/var/localhost.localdomain.err
9. Master与Slaves的测试
           A. Master 和Slaves的表结构必须保持一致。
           B. 在Master和Slaves中分别创建一张test表

 CREATE TABLE `syn` (
`id` int(11) NOT NULL,
`value` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


C. 在master中插入一条数据

 INSERT INTO `syn` VALUES ('1', 'test');


                  备注:如果Salves中有刚才在master中插入的数据则同步成功;否则同步失败!
2、 Mysql proxy 安装
       2.1.   Linux下所依赖的包

 A. GC++
B. Glib
C. LUA5.1
D. Libevent


             2.2.  MySQL Proxy 安装 

 [root@localhost ~]#tar -zxvf mysql-proxy-0.6.1-linux-rhel4-x86-32bit.tar.gz -C /usr/local/mysql/
[root@localhost ~]#cd /usr/local/mysql
[root@localhost mysql]#mv mysql-proxy-0.6.1-linux-rhel4-x86-32bit/ mysql-proxy
[root@localhost sbin]# export PATH=$PATH:/usr/local/mysql/mysql-proxy/sbin/


3. 使用MySQL Proxy
         3.1、查看帮助选项

 [root@localhost ~]# mysql-proxy --help-all


         3.2、对MySQL 操作
                    MySQL服务器假设已经安装。(安装步骤这里就不写了)
                   两台机器上的表初始结构和数据都是一样的,而且都有admins这个用户(密码必须一致)。
                   启 动 MySQL-Proxy ( 测 试 读 写 分 离 )

 [root@localhost]# mysql-proxy
--proxy-read-only-backend-addresses=192.168.0.101:3306   --proxy-backend-addresses=192.168.0.100:3306   --proxy-lua-script=/usr/local/mysql/mysql-proxy/share/mysql-proxy/rw-splitting.lua


           备注:192.168.0.101:3306 提供只读服务
                       192.168.0.100:3306 提供写服务
3.3、Mysql-proxy 的默认端口为4040
3.4、数据测试为用mysql client 连接 mysql-proxy进行数据操作




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论