指导老师:双星曾勇老师

首先搭建好主从环境

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配置

<property name="port">9006</property>

指定监听端口9006

<property name="ipAddress">10.0.0.22</property>

指定本机10.0.0.22

<property name="user">root</property>

本机用户root

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

root用户密码

2)主服务器端登录信息

<property name="port">3306</property>

主服务器mysql对应端口

<property name="ipAddress">10.0.0.201</property>

主服务器IP

<property name="user">amoeba</property>

授权的amoeba用户

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

授权用户密码

3)从服务器配置

<property name="port">3306</property>

从服务器开启的端口

<property name="ipAddress">10.0.0.202</property>

从服务器IP

<property name="user">amoeba</property>

从服务器授权用户amoeba

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

从服务器的密码

4)配置master和slave负载均衡池pool

主服务器

<dbServer name="master" virtual="true">

<property name="poolNames">server1</property>

从服务器

<dbServer name="slave" virtual="true">

<propertyname="poolNames">server1,server2</property>

5)配置master和slave读写分离

<property name="defaultPool">master</property>

默认

<property name="writePool">master</property>

<property name="readPool">slave</property>

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查看进程是否启动成功


心得:主从主要解决数据的安全问题,读写分离主要解决服务器的压力过大的问题,利用主从和读写分离能很好的解决服务器上面的压力和数据安全问题。