◆主从架构
1.安装服务(主从)
yum -y install mysql*
/etc/init.d/mysqld start
2.修改配置文件:/etc/my.conf(主从)
vi /etc/my.conf
log-bin=mysql-bin ###开启二进制日志文件
server-id=131 ###声明服务器ID,不重复即可
/etc/init.d/mysqld restart
3.1进入主—数据库
mysqladmin -uroot password '123'
mysql -uroot –p
##创建从服务器登录用户
##grant replication slave on *.* to '用户'@'%' identified by '密码';
grant replication slave on *.* to 'master'@'%' identified by '123';
show master status; ##查看二进制文件名,以及大小
3.2进入从-数据库
mysqladmin -uroot password '123'
mysql -uroot –p
##确定从主服务器同步
##change master to master_host='主服务器IP',master_user='用户',master_password='密码',master_log_file='二进制文件',master_log_pos=文件空间大小;
change master to master_host='192.168.116.131',master_user='master',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=385;
##启动同步
start slave;
##查看同步服务开启状态
show slave status\G;
4.测试
主:create database aa;
从:show databases;
◆主从从架构
1.安装服务(主从)
yum -y install mysql*
/etc/init.d/mysqld start
2.修改配置文件:/etc/my.conf(主从)
vi /etc/my.conf
log-bin=mysql-bin ###开启二进制日志文件
server-id=131 ###声明服务器ID,不重复即可
/etc/init.d/mysqld restart
3.1进入主—数据库
mysqladmin -uroot password '123'
mysql -uroot –p
##创建从服务器登录用户
##grant replication slave on *.* to '用户'@'%' identified by '密码';
grant replication slave on *.* to 'master'@'%' identified by '123';
show master status; ##查看二进制文件名,以及大小
3.2进入从1-数据库
mysqladmin -uroot password '123'
mysql -uroot –p
##确定从主服务器同步
##change master to master_host='主服务器IP',master_user='用户',master_password='密码',master_log_file='二进制文件',master_log_pos=文件空间大小;
change master to master_host='192.168.116.131',master_user='master',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=385;
##启动同步
start slave;
##查看同步服务开启状态
show slave status\G;
3.3进入从2-数据库
mysqladmin -uroot password '123'
mysql -uroot –p
##确定从主服务器同步
##change master to master_host='主服务器IP',master_user='用户',master_password='密码',master_log_file='二进制文件',master_log_pos=文件空间大小;
change master to master_host='192.168.116.131',master_user='master',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=385;
##启动同步
start slave;
##查看同步服务开启状态
show slave status\G;
4.测试
主:create database bb;
从1:show databases;
从2:show databases;
◆主主架构(互为主从)
###服务器有数据的情况,需要手动先同步一致,cp重定向到mysql
1.安装服务(主主)
yum -y install mysql*
/etc/init.d/mysqld start
2.修改配置文件:/etc/my.conf(主主)
vi /etc/my.conf
log-bin=mysql-bin ###开启二进制日志文件
server-id=131 ###声明服务器ID,不重复即可
###下面几个看实际情况使用,实验环境可忽略
replicate-do-db=test ###需要同步的数据库
binlog-ignore-db=mysql ###不需要同步的数据库
binlog-ignore-db=information_schema ##不需要同步的数据库
auto-increment-increment=2 ###为了保证含有自增长的不会冲突
auto-increment-offset=1 ###为了保证含有自增长的不会冲突
log-slave-updates=true
/etc/init.d/mysqld restart
3.1进入主1—数据库 ip:192.168.116.131
mysqladmin -uroot password '123'
mysql -uroot –p
##创建从服务器登录用户
##grant replication slave on *.* to '用户'@'%' identified by '密码';
grant replication slave on *.* to 'master'@'%' identified by '123';
flush privileges;
show master status; ##查看二进制文件名,以及大小
##确定从主服务器同步
##change master to master_host='主服务器IP',master_user='用户',master_password='密码',master_log_file='二进制文件',master_log_pos=文件空间大小;
change master to master_host='192.168.116.132',master_user='slave',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=384;
##启动同步
start slave;
##查看同步服务开启状态
show slave status\G;
3.2进入主2-数据库 ip:192.168.116.132
mysqladmin -uroot password '123'
mysql -uroot –p
##创建从服务器登录用户
##grant replication slave on *.* to '用户'@'%' identified by '密码';
grant replication slave on *.* to 'slave'@'%' identified by '123';
show master status; ##查看二进制文件名,以及大小
##确定从主服务器同步
##change master to master_host='主服务器IP',master_user='用户',master_password='密码',master_log_file='二进制文件',master_log_pos=文件空间大小;
change master to master_host='192.168.116.131',master_user='master',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=247;
##启动同步
start slave;
##查看同步服务开启状态
show slave status\G;
4.测试
主1:create database aa;show databases;主2:show databases;
主2:create database aa;show databases;主1:show databases;
◆主主从架构
1.安装服务(主主从)
yum -y install mysql*
/etc/init.d/mysqld start
2.主配置文件:/etc/my.conf
2.1两台主服务器
vi /etc/my.conf
log-bin=mysql-bin ###开启二进制日志文件
server-id=131和132 ###声明服务器ID,不重复即可
/etc/init.d/mysqld restart
2.2从服务器
vi /etc/my.cnf
[mysqld_multi]
mysqld=/usr/bin/mysqld_safe
mysqladmin=/usr/bin/mysqladmin
log=/tmp/multi.log
[mysqld131]
port=3306
pid-file=/var/lib/mysqla/mysqld.pid
datadir=/var/lib/mysqla
socket=/var/lib/mysqla/mysql.sock
server-id=129
user=mysql
[mysqld132]
port=3307
pid-file=/var/lib/mysqlb/mysqld.pid
datadir=/var/lib/mysqlb
socket=/var/lib/mysqlb/mysql.sock
server-id=129
user=mysql
3.1 主1进入数据库
mysqladmin -uroot password '123'
mysql -uroot -p
grant replication slave on *.* to 'master1'@'%' identified by '123';
show master status;
3.2 主2进入数据库
mysqladmin -uroot password '123'
mysql -uroot -p
grant replication slave on *.* to 'master2'@'%' identified by '123';
show master status;
3.3 从服务器
mysql_install_db --datadir=/var/lib/mysqla --user=mysql ###初始化mysqla数据库
mysql_install_db --datadir=/var/lib/mysqlb --user=mysql ###初始化mysqlb数据库
cd /var/lib
chown -R mysql /var/lib/mysqla/ ##修改文件权限
chown -R mysql /var/lib/mysqlb/ ##修改文件权限
mysqld_multi --defaults-file=/etc/my.cnf start 131 ##主1id号,开起数据库01,为主1备份
mysqld_multi --defaults-file=/etc/my.cnf start 132 ##主2id号,开起数据库02,为主2备份
测试端口:netstat -an |grep 3306&3307
mysqladmin -u root password '123' -S /var/lib/mysqla/mysql.sock ##建立131数据库密码
mysqladmin -u root password '123' -S /var/lib/mysqlb/mysql.sock ##建立132数据库密码

####进入mysqla ----131数据库配置
mysql -uroot -p -S /var/lib/mysqla/mysql.sock
change master to master_host='192.168.116.131',master_user='master1',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=247;
start slave;
show slave status\G;
exit

####进入mysqlb -----132数据库配置
mysql -uroot -p -S /var/lib/mysqlb/mysql.sock
change master to master_host='192.168.116.132',master_user='master2',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=247;
start slave;
show slave status\G;
exit
4.测试
主1备份测试:
主1: create database aa;
从:
mysql -uroot -p -S /var/lib/mysqla/mysql.sock
show databases;
主2备份测试:
主2:create database bb;
从:
mysql -uroot -p -S /var/lib/mysqlb/mysql.sock
show databases;

◆mysql读写分离 -----amoeba
1.两台数据库主从关系
yum -y install mysql*
/etc/init.d/mysqld start
vi /etc/my.conf
log-bin=mysql-bin ###开启二进制日志文件
server-id=131 ###声明服务器ID,不重复即可
/etc/init.d/mysqld restart
##主数据库
mysqladmin -uroot password '123'
mysql -uroot –p
grant all privileges on *.* to 'amoeba'@'%' identified by '123';
show master status; ##查看二进制文件名,以及大小

###从数据库
mysqladmin -uroot password '123'
mysql -uroot –p
change master to master_host='192.168.116.131',master_user='amoeba',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=382;
grant all privileges on *.* to 'amoeba'@'%' identified by '123';

##查看同步服务开启状态
show slave status\G;
#启动同步
start slave;
###测试
主:create database aa;
从:show databases;

2.配置amobe服务器
yum -y install lrzsz mysql
rz amoeba-n.iso
mkdir /iso
mount -o loop amoeba-n.iso /iso/
cp /iso/* .
tar zxvf jdk-7u40-linux-x64.gz
mv jdk1.7.0_40/ /usr/local/jdk
vi /etc/profile
#JDK
JAVA_HOME=//usr/local/jdk
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH export CLASSPATH
source /etc/profile

###测试:echo $PATH java -version

unzip amoeba-mysql-1.3.1-BETA.zip -d /usr/local/amoeba
chmod -R a+x /usr/local/amoeba/bin/
vi /usr/local/amoeba/conf/amoeba.xml
#####amoeba主配置信息
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE amoeba:configuration SYSTEM "amoeba.dtd">
<amoeba:configuration xmlns:amoeba="http://amoeba.meidusa.com/">

<server>
<!-- proxy server°ó¶¨µÄ¶Ë¿Ú -->
<property name="port">9000</property>

<!-- proxy server°ó¶¨µÄIP -->
<property name="ipAddress">192.168.116.129</property>
<!-- proxy server net IO Read thread size -->
<!-- proxy server client process thread size -->
<property name="clientSideThreadPoolSize">30</property>

<!-- mysql server data packet process thread size -->
<property name="serverSideThreadPoolSize">30</property>

<!-- Enable/disable TCP_NODELAY (disable/enable Nagle's algorithm). -->
<property name="tcpNoDelay">true</property>

<!-- ¶ÔÍâÑéÖ¤µÄÓû§Ãû -->
<property name="user">root</property>

<!-- ¶ÔÍâÑéÖ¤µÄÃÜÂë -->
<property name="password">456</property>

<!-- query timeout( default: 60 second , TimeUnit:second) -->
<property name="queryTimeout">60</property>
</server>

<!--
ÿ¸öConnectionManager¶¼½«×÷Ϊһ¸öÏß³ÌÆô¶¯¡£
manager¸ºÔðConnection IO¶Áд/ËÀÍö¼ì²â
-->
<connectionManagerList>

<!--
default value is avaliable Processors
<property name="processors">5</property>
-->
</connectionManager>
</connectionManagerList>

<dbServerList>
<!--
һ̨mysqlServer ÐèÒªÅäÖÃÒ»¸öpool£¬
Èç¹û¶ą̀ ƽµÈµÄmysqlÐèÒª½øÐÐloadBalance£¬
¼òµ¥µÄÅäÖÃÊÇÊôÐÔ¼ÓÉÏ virtual="true",¸ÃPool ²»ÔÊÐíÅäÖÃfactoryConfig
»òÕß×Ô¼ºÐ´Ò»¸öObjectPool¡£
-->
<dbServer name="server1">

<!-- PoolableObjectFactoryʵÏÖÀà -->
<property name="manager">defaultManager</property>

<!-- ÕæÊµmysqlÊý¾Ý¿â¶Ë¿Ú -->
<property name="port">3306</property>

<!-- ÕæÊµmysqlÊý¾Ý¿âIP -->
<property name="ipAddress">192.168.116.131</property>
<property name="schema">aa,bb</property>

<!-- ÓÃÓڵǽmysqlµÄÓû§Ãû -->
<property name="user">amoeba</property>

<!-- ÓÃÓڵǽmysqlµÄÃÜÂë -->

<property name="password">123</property>

</factoryConfig>

<!-- ObjectPoolʵÏÖÀà -->
<poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">
<property name="maxActive">200</property>
<property name="maxIdle">200</property>
<property name="minIdle">10</property>
<property name="minEvictableIdleTimeMillis">600000</property>
<property name="timeBetweenEvictionRunsMillis">600000</property>
<property name="testOnBorrow">true</property>
<property name="testWhileIdle">true</property>
</poolConfig>
</dbServer>

<dbServer name="master" virtual="true">
<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
<!-- ¸ºÔؾùºâ²ÎÊý 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
<property name="loadbalance">1</property>

<!-- ²ÎÓë¸Ãpool¸ºÔؾùºâµÄpoolNameÁбíÒÔ¶ººÅ·Ö¸î -->
<property name="poolNames">server1</property>
</poolConfig>
</dbServer>
<dbServer name="server2">

<!-- PoolableObjectFactoryʵÏÖÀà -->
<property name="manager">defaultManager</property>

<!-- ÕæÊµmysqlÊý¾Ý¿â¶Ë¿Ú -->
<property name="port">3306</property>

<!-- ÕæÊµmysqlÊý¾Ý¿âIP -->
<property name="ipAddress">192.168.116.132</property>
<property name="schema">aa,bb</property>

<!-- ÓÃÓڵǽmysqlµÄÓû§Ãû -->
<property name="user">amoeba</property>

<!-- ÓÃÓڵǽmysqlµÄÃÜÂë -->

<property name="password">123</property>

</factoryConfig>

<!-- ObjectPoolʵÏÖÀà -->
<poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">
<property name="maxActive">200</property>
<property name="maxIdle">200</property>
<property name="minIdle">10</property>
<property name="minEvictableIdleTimeMillis">600000</property>
<property name="timeBetweenEvictionRunsMillis">600000</property>
<property name="testOnBorrow">true</property>
<property name="testWhileIdle">true</property>
</poolConfig>
</dbServer>

<dbServer name="slave" virtual="true">
<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
<!-- ¸ºÔؾùºâ²ÎÊý 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
<property name="loadbalance">1</property>

<!-- ²ÎÓë¸Ãpool¸ºÔؾùºâµÄpoolNameÁбíÒÔ¶ººÅ·Ö¸î -->
<property name="poolNames">server2</property>
</poolConfig>
</dbServer>
</dbServerList>

<queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter">
<property name="ruleConfig">${amoeba.home}/conf/rule.xml</property>
<property name="functionConfig">${amoeba.home}/conf/functionMap.xml</property>
<property name="ruleFunctionConfig">${amoeba.home}/conf/ruleFunctionMap.xml</property>
<property name="LRUMapSize">1500</property>
<property name="defaultPool">master</property>

<property name="writePool">master</property>
<property name="readPool">slave</property>
<property name="needParse">true</property>
</queryRouter>
</amoeba:configuration>
######amoeba主配置信息

vi /usr/local/amoeba/bin/amoeba
DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k" ###128k改成256k

###启动amoeba
nohup bash -x /usr/local/amoeba/bin/amoeba &
##测试服务是否启动
netstat -an | grep 9000

yum -y install mysql
mysql -uroot -p -h 192.168.116.129 -P 9000 ##本机amoeba密码:456

###测试amoeba效果,关闭从,测试主是否可读可写

mysql架构精选的更多相关文章

  1. 数据库周刊28│开发者最喜爱的数据库是什么?阿里云脱口秀聊程序员转型;MySQL update误操作;PG流复制踩坑;PG异机归档;MySQL架构选型;Oracle技能表;Oracle文件损坏处理……

    热门资讯 1.Stackoverflow 2020年度报告出炉!开发者最喜爱的数据库是什么?[摘要]2020年2月,近6.5万名开发者参与了 Stackoverflow 的 2020 年度调查,这份报 ...

  2. 步步深入:MySQL架构总览->查询执行流程->SQL解析顺序

    前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来 ...

  3. ch2 MySQL 架构组成

    第 2 章 MySQL 架构组成 前言 麻雀虽小,五脏俱全.MySQL    虽然以简单著称,但其内部结构并不简单.本章从 MySQL 物理组成.逻辑组成,以及相关工具几个角度来介绍    MySQL ...

  4. mysql笔记01 MySQL架构与历史、Schema与数据类型优化

    MySQL架构与历史 1. MySQL架构推荐参考:http://www.cnblogs.com/baochuan/archive/2012/03/15/2397536.html 2. MySQL会解 ...

  5. 理解MySQL——架构与概念

    写在前面:最早接触的MySQL是在三年前,那时候MySQL还是4.x版本,很多功能都不支持,比如,存储过程,视图,触发器,更别说分布式事务等复杂特性了.但从5.0(2005年10月)开始,MySQL渐 ...

  6. MySQL 架构

    原文:MySQL 架构 MySQL架构和结构分析 官方架构图: MySQL DB 各模块架构图如下: MySQL安装方式 MySQL初始化 简介:什么是事务: 事务: ACID :  事务确保了银行不 ...

  7. MySQL架构优化:定时计划任务与表分区

    转自: MySQL架构优化实战系列3:定时计划任务与表分区 - 今日头条(TouTiao.com)http://toutiao.com/a6304736482361049345/?tt_from=mo ...

  8. MySQL架构由小变大的演变过程

    假设一个网站(discuz)从最开始访问量很小做到日pv千万,我们来推测一下它的mysql服务器架构演变过程. 第一阶段网站访问量日pv量级在1w以下.单台机器跑web和db,不需要做架构层调优(比如 ...

  9. 第 2 章 MySQL 架构组成

    麻雀虽小,五脏俱全.MySQL 虽然以简单著称,但其内部结构并不简单.本章从MySQL物理组成.逻辑组成,以及相关工具几个角度来介绍 MySQL 的整体架构组成,希望能够让读者对 MySQL 有一个更 ...

随机推荐

  1. Cocos2d-x之Label

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 在游戏开发中经常会使用标签文字,例如,游戏介绍,玩家积分,菜单选项,文字提示等等.      LabelTTF 直接支持使用 TTF 字库 ...

  2. Ubuntu添加与删除PPA源

    目录 PPA,英文全称为 Personal Package Archives,即个人软件包档案.是 Ubuntu Launchpad 网站提供的一项源服务,允许个人用户上传软件源代码,通过 Launc ...

  3. 组件化框架设计之Java SPI机制(三)

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 本篇文章将从深入理解java SPI机制来介绍组件化框架设计: ...

  4. centos 7.2 离线安装 gcc

    1.查看有没有挂载 centos 7.2 的镜像源文件 2.如果没有就通过服务端挂载 如果不知怎么挂载,就解压CentOS-7-x86_64-DVD-1511.iso 镜像文件,在Packages找到 ...

  5. mac bash上显示git分支与状态

    主要实现 显示当前路径 显示当前所在分支 显示当前修改状态 = 表示一个干净的分支 ~ 表示文件有改动 # 表示已commit 但未 push 通过网上搜索和自己根据实际需要修改的代码如下: .bas ...

  6. [fw]IDT表的初始化

    IDT表的初始化  linux内核的中断描述符表IDT是一个全局的数据,在i386平台上被定义为: struct desc_struct idt_table[256] __attribute__((_ ...

  7. python基础类型(字典:dict)

    字典的介绍: 字典(dict)Python中唯一的一个映射类型.他是以{}括起来的键值对组成,在dict中key是唯一的.在保存的时候,根据key来计算出一个内存地址,然后将key-value保存到这 ...

  8. 试试监听输入框的值 (eq:在未输入前,按钮为灰色,输入内容后,按钮变蓝色)

    参考网址:https://blog.csdn.net/tel13259437538/article/details/78927071

  9. 彩彩只能变身队团队项目进展记录by后端

    2018.06.03 早上8:00-晚上8:00 后端小组一起在图书馆四楼边学边做: 1.首先搞定了数据库,学会了怎样用命令行来操作数据库,并且建立了一个用户表. 2.然后自己设计了一个简陋的前端页面 ...

  10. python 常用技巧 — 字典 (dictionary)

    目录: 1. python 相加字典所有的键值 (python sum all values in dictionary) 2. python 两个列表分别组成字典的键和值 (python two l ...