指导老师:双星曾勇老师
一、首先搭建好主从环境
1.主从工作目的
实现数据的实时同步,放置数据的丢失,是目前保证数据完整最成熟的技术。
2.主从工作的组成部分:
应用线程:
主服务器包含了数据传输的IO线程
从服务器包含了数据传输的IO线程和提供数据解析SQL线程
操作对象:
主服务器的bin-log文件内容以及位置
从服务器的maskinfo文件和relay log文件
操作时间:
当主服务器的mysql数据库的内容发生改变时
3.主从的工作原理
前提:打开binarylog,否则无法实现
从服务器通过IO线程向主服务器发送数据请求,请
求日志文件的内容和位置。(或者从上次请求数据的内
容开始)
主服务器接受到请求后,通过负责辅助的IO线程把
数据数据返回给从服务器(包括文件内容和位置)。
从服务器接受到主服务器的数据之后,将内容写入
relay log文件并且读取到Master端的bin-log文件
和位置记录, 记录到master-info文件当中,以便
下一次能够清楚的告诉Master我bin-log要从的哪
个位置开始往后的内容,请发给我。
从服务器通过SQL线程将接受到的内容解析到自己
的数据库。
4.主从的环境配置
在主服务器上:
打开bin-log日志文件
设置配置文件server_id=1
关闭log-slave-updates
建立一个内部复制通信用户(grant,刷新权限)
show master status\G;(查看状态)
在从服务器上:
打开bin-log日志文件
设置配置文件server_id=2
打开log-slave-updates
mysql 命令行输入
stop slave
change master to 接主服务器的IP,用户名,密码,同步的二 进制文件及位置
start slave
show slave status\G(同上)
5.常见错误
mysql权限配置错误
解决方法:删除用户,重新添加用户并刷新权限
二、其次搭建Amoeba服务器
1.jdk的安装
1)创建jdk存放目录
mkdir/Amoeba
2)解压jdk软件包(注意jdk包适用系统位数)
tar -xvf jjdk-7u40-linux-x64.tar.gz -C /Amoeba/
3)配置环境变量
# vim /etc/profile
JAVA_HOME=/Amoeba/jdk1.7.0_40
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
export CLASLASSPATH
source /etc/profile刷新环境变量
4)测试
java -version
2、安装Amoeba
1)解压amoeba安装包
unzip amoeba-mysql-1.3.1-BETA.zip -d /usr/local/amoeba/
2)添加权限
chmod -R +x /usr/local/amoeba/bin/
3、主从授权
1)添加授权用户amoeba
grant all privileges on *.* to 'amoeba'@'%' identified by 'amoeba123';
2)刷新权限
flush privileges
4、配置Amoeba文件
1)amoeba配置
9006
指定监听端口9006
10.0.0.22
指定本机10.0.0.22
root
本机用户root
123456
root用户密码
2)主服务器端登录信息
3306
主服务器mysql对应端口
10.0.0.201
主服务器IP
amoeba
授权的amoeba用户
amoeba123
授权用户密码
3)从服务器配置
3306
从服务器开启的端口
10.0.0.202
从服务器IP
amoeba
从服务器授权用户amoeba
amoeba123
从服务器的密码
4)配置master和slave负载均衡池pool
主服务器
server1
从服务器
server1,server2
5)配置master和slave读写分离
master
默认
master
写
slave
读
6)修改Amoeba启动脚本
vim /usr/local/amoeba/bin/amoeba
DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss128k" 将此行注释掉,增加一下行
DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k"增加这一行
7)启动并且查看状态
nohup bash -x amoeba &
启动服务
cat nohup.out 日志查看那是否成功
ps -ef | grep amoeba查看进程是否启动成功
心得:主从主要解决数据的安全问题,读写分离主要解决服务器的压力过大的问题,利用主从和读写分离能很好的解决服务器上面的压力和数据安全问题。