1. 配置master&slave服务
注意:此处是通过阿里云服务器做的实验
阿里云服务器参数:
系统:ubuntu
数据库:服务器的MySql
1.1 配置阿里云服务器
注意:该步骤主从都要配置
添加安全组规则:
入方向
协议类型选择My SQL
授权类型改为地址段访问
授权对象输入:0.0.0.0/0(所有ip所有端口)
1.2 配置Master
1.2.1 修改主机/etc/mysql/mysql.cnf.d/mysqld.cnf文件
1. 将bind_address注释掉(此处的目的是让mysql可以被远程访问)
2. 在[mysqld]模块中解开并配置如下:
# 设置服务器id,(在一个组中是唯一的,注意不要重复)
server-id = 1
# 设置修改日志(主机中的修改动作会存在此处供slave读取)
log_bin = /var/log/mysql/mysql-bin.log
# 设置要同步的数据库
binlog_do_db = your_database
# 需要忽略的数据库
binlog_ignore_db = mysql
1.2.2 创建一个新用户用来远程连接使用:
//1. 创建一个用来进行远程连接的用户,其中%表示所有地址可登录 例:
create user 'admin'@'%' IDENTIFIED BY 'admin'
//2. 给创建的用户授权 例:
GRANT SELECT, INSERT ON database.table TO 'admin'@'%';
//补充:你也可以授予所有权限:
GRANT ALL ON *.* TO 'admin'@'%';
//3. 授予从机操作权限
GRANT REPLICATION SLAVE ON *.* TO 'admin'@'%' IDENTIFIED BY 'admin';
1.2.3 重启MySql
- 退出mysql:exit;
- 输入service mysql restart
1.2.4 登录mysql,查看master状态(注意记录File 和Position的值待用)
show master status;
1.3 配置Slave
1.3.1 修改MySQL配置文件/etc/mysql.conf.d/mysqld.cnf
#1. 将bind_address注释掉(此处的目的是让mysql可以被远程访问)
#2. 在[mysqld]中添加:
#定义服务器id
server-id = 2
#定义从机日志位置(通过io流从主机读取的日志存放位置)
relay-log = slave-relay-bin
#同上
relay-log-index = slave-relay-bin.index
1.3.2 重启mysql服务
1.3.3 登录slave,设置master信息
change master to master_host='120.79.21.141',master_post=3306,master_user='ttt',master_password='111111',master_log_file='mysql-bin.000003',master_log_pos=154;
注意:
1. master_host对应主服务器的外网IP地址
2. master_port对应主服务器的端口(3306)
3. master_log_file对应show master status显示的File列:mysql->bin.000001
4. master_log_pos对应Position列:154
1.3.4 创建与Master相同的database及表
1.3.5 再次重启服务
1.3.6 登录slave开启slave服务 :start slave
1.3.7 查看slave状态:show slave status 出现两个yes就应该成功了
- 若不成功,查看状态,看是传入的io流的问题还是读写日志入库的原因。
- 前者检查change命令,后者检查配置文件
- stop slave重起一下slave服务
2.配置读写分离
2.1 配置MySql主从(同上)
2.2 安装amoeba
此处的版本:amoeba-mysql-3.0.5-RC
解压到某一个自定义文件加
2.3 配置amoeba
2.3.1 配置 doServers.xml(路径:安装路径下的conf文件夹中)