mysql安装+主从复制+ameoba读写分离
一、软件环境
-
centos6
-
Percona-Server-5.6.24-72.2-r8d0f85b-el6-x86_64-bundle.tar
-
amoeba-mysql-3.0.4-BETA.tar.gz
二、mysql安装
-
解压包Percona
tar -xvf Percona-Server-5.6.24-72.2-r8d0f85b-el6-x86_64-bundle.tar
-
安装这四个:
rpm -ivh Percona-Server-56-debuginfo-5.6.24-rel72.2.el6.x86_64.rpm rpm -ivh Percona-Server-shared-56-5.6.24-rel72.2.el6.x86_64.rpm rpm -ivh Percona-Server-client-56-5.6.24-rel72.2.el6.x86_64.rpm rpm -ivh Percona-Server-server-56-5.6.24-rel72.2.el6.x86_64.rpm
-
启动或关闭
启动: service mysql start <!--Starting MySQL (Percona Server)... SUCCESS!--> 关闭: service mysql stop 重启服务: service mysql restart
-
设置数据库密码
mysqladmin -uroot password root
-
登录
mysql -uroot -proot
-
设置数据库远程访问权限
grant all on *.* to 'root'@'%' identified by 'root';
或者指定IP访问权限:
grant all on *.* to 'root'@'192.168.1.1' identified by 'root';
-
打开端口3306
centos6 打开端口
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT /etc/rc.d/init.d/iptables save /etc/init.d/iptables status
centos7 打开端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload firewall-cmd --zone=public --list-ports
-
数据库简单操作
//创建数据库,防止乱码,导入数据chen.sql create database jtdb; set names utf8; source chen.sql show tables; select * from tb_item;
-
其他(跳过)
卸载安装程序 yum remove Percona-Server* 删除数据和配置文件 rm -rf /var/lib/mysql rm -f /etc/my.cnf
三、mysql主从复制
-
安装三台电脑,安装三个mysql,一主二从,分别为master,slave01,slave02
-
编辑mysql配置文件(如果没有,可以从defaut.cnf中cp)
vi /etc/my.cnf
master节点:在[mysqld]节点下加入两句话,设置ID和启用二进制日志
server-id=1 log-bin=mysql-bin
slave01节点:在[mysqld]节点下加入一句话,设置ID
server-id=2
slave02节点:在[mysqld]节点下加入一句话,设置ID
server-id=3
-
如果是克隆的,需要修改uuid
vi /var/lib/mysql/auto.cnf
-
重启所有mysql节点
service mysql restart
如果失败报错,就杀死进程
ERROR! MySQL (Percona Server) PID file could not be found! kill -9 31025
-
挂靠配置主从复制
1)主表操作
登录mysql: mysql -root -proot 数据库锁表,不让写数据 flush tables with read lock; #查看MASTER状态(这两个值File和Position) show master status; +------------------+---------- | File | Position | +------------------+----------+ | mysql-bin.000001 | 120 | +------------------+----------+ #从启动好后,记得要解除锁定 mysql>unlock tables;
2)两个从表,挂靠操作,修改为上一步查出来的内容
通过mysql命令配置同步日志的指向: change master to master_host='192.168.8.39', master_port=3306,master_user='root',master_password='root',master_log_file='mysql-bin.000006', master_log_pos=120;
<!--master_host 主服务器的IP地址--> <!--master_port 主服务器的PORT端口--> <!--master_log_file 和主服务器show master status中的File字段值相同--> <!--master_log_pos 和主服务器show master status中的Position字段值相同-->
3)从服务启动
start slave; #stop slave;停止服务,出错时先停止,再重新配置 show slave status\G; #查看SLAVE状态,在cmd中,\G结果纵向显示。必须大写
<!--成功信息:--> <!--Slave_IO_Running: Yes--> <!--Slave_SQL_Running: Yes-->
4)解锁主表写入
UNLOCK TABLES;
完成
-
如果第一次没有成功挂在,先停止slave,之后重试
STOP SLAVE;
四、mysql读写分离ameoba实现
-
上传amoeba-mysql-3.0.4-BETA.tar.gz;
amoeba-mysql-3.0.4-BETA-chen.tar.gz为绿色配置好的,只需修改账号密码和对应IP即可
-
解压
tar -xvf amoeba-mysql-3.0.4-BETA.tar.gz
-
修改配置文件dbServers.xml
vi dbServers.xml
1)修改数据库账号密码
<property name="user">root</property> <property name="password">root</property>
2)设置数据库主从库,注意对应数据IP
<dbServer name="master" parent="abstractServer"> <factoryConfig> <!-- mysql ip --> <property name="ipAddress">192.168.8.39</property> </factoryConfig> </dbServer>
<dbServer name="slave01" parent="abstractServer"> <factoryConfig> <!-- mysql ip --> <property name="ipAddress">192.168.8.191</property> </factoryConfig> </dbServer>
<dbServer name="slave02" parent="abstractServer"> <factoryConfig> <!-- mysql ip --> <property name="ipAddress">192.168.8.120</property> </factoryConfig> </dbServer>
3)设置读写分离负载均衡
<dbServer name="multiPool" virtual="true"> <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool"> <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA--> <property name="loadbalance">1</property> <!-- Separated by commas,such as: server1,server2,server1 --> <property name="poolNames">master,slave01,slave01,slave02,salve02</property> </poolConfig> </dbServer>
-
修改配置文件 amoeba.xml
vi amoeba.xml
1)注意8066是代理数据库端口
<!-- port --> <property name="port">8066</property>
2)修改设置Amoeba代理数据库的密码,经测试正确。
<property name="user">root</property> <property name="password">root</property>
3)设置读写对应数据库
<property name="LRUMapSize">1500</property> <property name="defaultPool">multiPool</property> <property name="writePool">master</property> <property name="readPool">multiPool</property> <property name="needParse">true</property>
-
修改 bin/launcher
vi launcher
添加一行:
DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k"
默认配置Xss比较小128k,启动时提示太小,则修改/amoeba/bin/amoeba文件,修改为256k即可。
或JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"
-
打开ameoba端口8066
centos6 打开端口
/sbin/iptables -I INPUT -p tcp --dport 8066 -j ACCEPT /etc/rc.d/init.d/iptables save /etc/init.d/iptables status
centos7 打开端口
firewall-cmd --zone=public --add-port=8066/tcp --permanent firewall-cmd --reload firewall-cmd --zone=public --list-ports
-
启动停止
./bin/amoeba start 或 ./bin/amoeba start & ./bin/laucher start 或 ./bin/laucher start & ./bin/amoeba stop ./bin/laucher stop
-
设置开机启动
vi /etc/rc.d/rc.local
# vi /etc/rc.d/rc.local #jkd运行环境加载 export JAVA_HOME=/usr/local/src/java/jdk1.7.0_51 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar #amoeba开机启动 /usr/local/src/ameoba/amoeba-mysql-3.0.4-BETA/bin/launcher start & #/usr/local/src/amoeba/amoeba-mysql-3.0.4-BETA/bin/launcher start &
-
ameoba安装完成。
vi /etc/rc.d/rc.local
#jkd运行环境加载 export JAVA_HOME=/usr/local/src/java/jdk1.7.0_51 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar #amoeba开机启动 /usr/local/src/ameoba/amoeba-mysql-3.0.4-BETA/bin/launcher start &
-
ameoba安装完成。