标签:tcp mes insert 缺点 type 自己的 pwd mysql-bin test
Amoeba是什么?Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发,它位于与Client、DBServer(s)之间,对客户端透明。具有 负载均衡、高可用性、SQL过滤、读写分离、可路由相关的到目标数据库、可并发请求多台数据库合并结果 。
通过Amoeba你能够完成多数据源的高可用、负载均衡、数据切片的功能,目前Amoeba已在很多 企业的生产线上面使用。
Amoeba在分布式数据库领域将致力解决数据切分,应付客户端“集中式”处理分布式数据。这里集中式是一个相对概念,客户端不需要知道某种数据的物理存储地。避免这种逻辑出现在业务端,大大简化了客户端操作分布式数据的复杂程度。
有三个数据库节点分别命名为Master、Slave1、Slave2如下:
主机 | 操作系统 | IP地址 | 软件包 |
---|---|---|---|
amoeba服务器 | CentOS 7.0 x86_64 | 192.168.100.4 | jdk-6u14-linux-x64.bin、amoeba-mysql-binary-2.2.0.tar.gz |
Master服务器 | CentOS 7.0 x86_64 | 192.168.100.5 | mysql-5.5.24.tar.gz |
Slave1服务器 | CentOS 7.0 x86_64 | 192.168.100.6 | mysql-5.5.24.tar.gz |
Slave2服务器 | CentOS 7.0 x86_64 | 192.168.100.7 | mysql-5.5.24.tar.gz |
客户端 | CentOS 7.0 x86_64 | 192.168.100.3 | mysql |
软件包:软件包 密码:iikf
一般情况下,我们的集群为内网环境,无法和外网进行联网同步时间,那么这里我们使Slaves服务器与Master服务器进行时间同步。
vim /etc/ntp.conf
#本地是时钟源
server 127.127.100.0
#设置时间层级为8(限制在15内)
fudge 127.127.100.0 stratum 8
service ntpd start
service iptables stop
setenforce 0
service ntpd start
service iptables stop
setenforce 0
/usr/sbin/ntpdate 192.168.100.4
yum install gcc gcc-c++ make cmake ncurses-devel bisonlibaio-devel -y
tar zxvf mysql-5.5.24.tar.gz -C /opt/
useradd -s /sbin/nologin mysql
mkdir /usr/local/mysql
cd /opt/mysql-5.5.24
#配置mysql
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS=all
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_MEMORY_STORAGE_ENGINE=1
-DWITH_READLINE=1
-DENABLED_LOCAL_INFILE=1
-DMYSQL_DATADIR=/home/mysql
-DMYSQL_USER=mysql
-DMYSQL_TCP_PORT=3306
make & make install
chown -R mysql.mysql /usr/local/mysql
vi /etc/profile
export PATH=$PATH:/usr/local/mysql/bin/
source /etc/profile
cp /opt/mysql-5.5.24/support-files/my-medium.cnf /etc/my.cnf
cp /opt/mysql-5.5.24/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add /etc/init.d/mysqld
chkconfig mysqld --level 35 on
/usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql
ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock
vi /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/home/mysql
service mysqld start
mysqladmin -u root password ‘pwd123‘
mysql -uroot -p pwd123
service iptables stop
setenforce 0
特别提醒:以上三台mysql服务器安装步骤一样
vim /etc/my.cnf
server-id = 1 #修改id号
log-bin=master-bin #新增,主服务器日志文件
log-slave-updates=true #新增,从服务器更新二进制日志
service mysqld restart
mysql -u root -p
GRANT REPLICATION SLAVE ON *.* TO ‘myslave‘@‘192.168.100.%‘ IDENTIFIED BY ‘123456‘;
FLUSH PRIVILEGES;
show master status;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000002 | 339 | | |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
vim /etc/my.cnf
server-id = 11 #修改id号
relay-log=relay-log-bin #新增,从主服务器上同步日志文件记录到本地
relay-log-index=slave-relay-bin.index #新增,定义relay-log的位置和名称
service mysqld restart
mysql -u root -p
change master to master_host=‘192.168.100.5‘,master_user=‘myslave‘,master_password=‘123456‘,master_log_file=‘master-bin.000001‘,master_log_pos=339;
start slave;
show slave status\G;
vim /etc/my.cnf
server-id = 12 #修改id号
relay-log=relay-log-bin #新增,从主服务器上同步日志文件记录到本地
relay-log-index=slave-relay-bin.index #新增,定义relay-log的位置和名称
service mysqld restart
mysql -u root -p
change master to master_host=‘192.168.100.5‘,master_user=‘myslave‘,master_password=‘123456‘,master_log_file=‘master-bin.000001‘,master_log_pos=339;
start slave;
show slave status\G;
create database db_test;
show databases;
service iptables stop
setenforce 0
cp jdk-6u14-linux-x64.bin /usr/local/
./jdk-6u14-linux-x64.bin # yes 按enter
mv jdk1.6.0_14/ /usr/local/jdk1.6
vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$PATH:$AMOEBA_HOME/bin
source /etc/profile
mkdir /usr/local/amoeba
tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
chmod -R 755 /usr/local/amoeba/
/usr/local/amoeba/bin/amoeba
#显示amoeba start|stop说明安装成功
mysql -u root -p abc123
grant all on *.* to amoeba@‘192.168.100.%‘ identified by ‘123123‘;
cd /usr/local/amoeba/conf
vim amoeba.xml
---30行--
<property name="user">amoeba</property> #访问amoeba的用户名
----32行---------
<property name="password">123456</property> #密码
---117-去掉注释-
<property name="defaultPool">master</property> #默认为主服务器
<property name="writePool">master</property> #写入为主服务器
<property name="readPool">slaves</property> #读取为slaves池,现有slave1、slave2服务器
vi dbServers.xml
43 <dbServer name="master" parent="abstractServer"> #name为master
44 <factoryConfig>
45 <!-- mysql ip -->
46 <property name="ipAddress">192.168.100.5</property> #主服务器IP地址
47 </factoryConfig>
48 </dbServer>
49
50 <dbServer name="slave1" parent="abstractServer"> #name为slave1
51 <factoryConfig>
52 <!-- mysql ip -->
53 <property name="ipAddress">192.168.100.6</property> #从服务器1 IP地址
54 </factoryConfig>
55 </dbServer>
56
57 <dbServer name="slave2" parent="abstractServer"> #name为slave2
58 <factoryConfig>
59 <!-- mysql ip -->
60 <property name="ipAddress">192.168.100.7</property> #从服务器2 IP地址
61 </factoryConfig>
62 </dbServer>
63
64 <dbServer name="slaves" virtual="true"> #name为slaves
65 <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
66 <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
67 <property name="loadbalance">1</property> #默认为轮询方式
68
69 <!-- Separated by commas,such as: server1,server2,server1 -->
70 <property name="poolNames">slave1,slave2</property> #轮询顺序为:slave1、slave2
71 </poolConfig>
72 </dbServer>
/usr/local/amoeba/bin/amoeba start&
netstat -anpt | grep java
yum install -y mysql
mysql -u amoeba -p123456 -h 192.168.100.4 -P8066
service iptables stop
setenforce 0
mysql -u root -p
create database db_test;
use db_test;
create table zang (id int(10),name varchar(10),address varchar(20));
stop slave;
insert into zang values(‘1‘,‘zhang‘,‘this_is_master‘);
use db_test;
insert into zang values(‘2‘,‘zhang‘,‘this_is_slave1‘);
use db_test;
insert into zang values(‘3‘,‘zhang‘,‘this_is_slave2‘);
#多次执行该sql语句查看
use db_test;
select * from zang;
select * from zang;
Amoeba搭建高可用Mysql集群(实现Mysql主从复制、读写分离、负载均衡)
标签:tcp mes insert 缺点 type 自己的 pwd mysql-bin test
原文地址:http://blog.51cto.com/10316297/2139138