一.介绍
继上一篇mysql基本原理之后,我们开始进入mysql的实操环节,主要是简单搭建mysql的集群,原理上一篇都讲吐了,这一篇咱们直接开始搭建。
二、主从服务器:
(一).主从服务器介绍
1.mysql主从服务器介绍:
MySQL主从又叫做Replication、AB复制。
简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步。
MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
2.主从过程:
主将更改操作记录到binlog中
从将主的binlog事件(SQL语句)同步到本机并记录在relaylog中
从根据relaylog里面的SQL语句按顺序执行
说明:
该过程有三个线程 :主上有一个log dump线程,用来和从的i/o线程传递binlog;
从上有两个线程,其中i/o线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的SQL语句落地。
(二).主从服务器实验搭建
11是主服务器,12是从服务器
1.安装MySQL:
yum -y install mysql mysql-server
2.主服务器修改主配置文件:
vim /etc/my.cnf
log-bin=mysql-bin
server-id=11
3.从服务器修改主配置文件:
vim /etc/my.cnf
log-bin=mysql-bin
server-id=12
4.启动MySQL:
service mysqld start
5.主服务器MySQL登录:
mysqladmin -uroot password 123
mysql -uroot -p
6.创建mysql普通用户并赋予权限:
grant all on . to ‘cong’@’%’ identified by ‘123’;
7.查看当前二进制日志:
show master status;
8.从服务器MySQL登录:
mysqladmin -uroot password 123
mysql -uroot -p
9.同步主服务器的ip,user,passwd二进制文件,大小的信息
change master to master_host=‘192.168.21.11’,master_user=‘cong’,master_password=‘123’,master_log_file=‘mysql-bin.000003’,master_log_pos=369;
对应主服务器表格
10.查看当前数据库同步状态:
show slave status\G;
11.开启同步:
start slave;
12.主服务器创建库和表:
create database hongfu;
use hongfu;
create table biao (id int, name char(20));
insert into biao values (1, “小王”);
13.从服务器查看是否已同步:
use hongfu;
select * from biao;
三、主主从-服务器备份:
11备份服务器 12 13主服务器
1.安装mysql:
yum -y install mysql mysql-server
2.打开备份服务器主配置文件:
vim /etc/my.cnf
添加:
[mysqld_multi]
mysqld=/usr/bin/mysqld_safe
mysqladmin=/usr/bin/mysqladmin
log=/tmp/multi.log
[mysqld12]
port=3306
pid-file=/var/lib/mysqla/mysqld.pid
datadir=/var/lib/mysqla
socket=/var/lib/mysqla/mysql.sock
server-id=11
user=mysql
[mysqld13]
port=3307
pid-file=/var/lib/mysqlb/mysqld.pid
datadir=/var/lib/mysqlb
socket=/var/lib/mysqlb/mysql.sock
server-id=11
user=mysql
3.创建备份的目录:
mkdir /var/lib/mysqla
mkdir /var/lib/mysqlb
4.赋予权限:
chown mysql:mysql /var/lib/mysqla
chown mysql:mysql /var/lib/mysqlb
5.初始化MySQL:
mysql_install_db --datadir=/var/lib/mysqla --user=mysql
mysql_install_db --datadir=/var/lib/mysqlb --user=mysql
6.启动MySQL:
mysqld_multi --defaults-file=/etc/my.cnf start 12
mysqld_multi --defaults-file=/etc/my.cnf start 13
7.连接数据库时指定套接字:
mysqladmin -uroot password 123 -S /var/lib/mysqla/mysql.sock
mysqladmin -uroot password 456 -S /var/lib/mysqlb/mysql.sock
8.可以登录:
mysql -uroot -p123 -S /var/lib/mysqla/mysql.sock
mysql -uroot -p456 -S /var/lib/mysqlb/mysql.sock
9.换12主服务器:
安装mysql:
yum -y install mysql mysql-server
10.主服务器修改主配置文件:
vim /etc/my.cnf
log-bin=mysql-bin
server-id=12
11.启动MySQL:
service mysqld start
12.登录MySQL:
mysqladmin -uroot password 123
mysql -uroot -p
13.创建mysql普通用户并赋予权限:
grant all on . to ‘cong’@’%’ identified by ‘123’;
14.查看二进制日志:
show master status;
15.换13主服务器:
安装mysql:
yum -y install mysql mysql-server
10.主服务器修改主配置文件:
vim /etc/my.cnf
log-bin=mysql-bin
server-id=13
11.启动MySQL:
service mysqld start
12.登录MySQL:
mysqladmin -uroot password 123
mysql -uroot -p
13.创建mysql普通用户并赋予权限:
grant all on . to ‘cong’@’%’ identified by ‘123’;
14.查看二进制日志:
show master status;
15.在11登录
mysql -uroot -p123 -S /var/lib/mysqla/mysql.sock
16.同步主服务器13的ip,user,passwd二进制文件,大小的信息
change master to master_host=‘192.168.21.12’,master_user=‘cong’,master_password=‘123’,master_log_file=‘mysql-bin.000001’,master_log_pos=xxx;
17.查看当前数据库同步状态:
show slave status\G;
18.开启同步:
start slave;
show slave status\G;
再次查看:
19.将11开启新窗口:
mysql -uroot -p456 -S /var/lib/mysqlb/mysql.sock
20.同步主服务器14的ip,user,passwd二进制文件,大小的信息
change master to master_host=‘192.168.21.13’,master_user=‘cong’,master_password=‘123’,master_log_file=‘mysql-bin.000003’,master_log_pos=xxx;
21.查看当前数据库同步状态:
show slave status\G;
22.开启同步:
start slave;
再次查看是否同步
23.换12创建数据库和表:
create database hongfu1;
use hongfu1;
create table biao (id int, name char(20));
insert into biao values (1, “刘洋”);
select * from biao;
24.换13创建数据库和表:
create database hongfu2;
use hongfu2;
create table biao (id int, name char(20));
insert into biao values (1, “里斯”);
select * from biao;
25.查看11备份服务器已同步:
四、主主服务器:
原理:MySQL主主同步和主从同步的原理一样,只是双方都是主从角色。
1.安装MySQL:
yum -y install mysql mysql-server
2.11服务器修改主配置文件:
vim /etc/my.cnf
log-bin=mysql-bin
server-id=xx
replicate-do-db=test
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
auto-increment-increment=2
auto-increment-offset=1
3.12服务器修改主配置文件:
vim /etc/my.cnf
symbolic-links=0
log-bin=mysql-bin
server-id=12
replicate-do-db=test (同步的库)
binlog-ignore-db=mysql (不同步的库)
binlog-ignore-db=information_schema
auto-increment-increment=2 (自增长为2)
auto-increment-offset=2 (起始值为0)
4.启动MySQL:
service mysqld start
5.11服务器MySQL登录:
mysqladmin -uroot password 123
mysql -uroot -p
6.创建mysql普通用户并赋予权限:
grant all on . to ‘cong’@’%’ identified by ‘123’;
7.查看当前二进制日志:
show master status;
在这里插入图片描述
8.12服务器MySQL登录:
mysqladmin -uroot password 123
mysql -uroot -p
9.创建mysql普通用户并赋予权限:
grant all on . to ‘cong’@’%’ identified by ‘123’;
10.查看当前二进制日志:
show master status;
11.换11同步12服务器的ip,user,passwd二进制文件,大小的信息
change master to master_host=‘192.168.21.12’,master_user=‘cong’,master_password=‘123’,master_log_file=‘mysql-bin.000003’,master_log_pos=379;
12.查看当前数据库同步状态:
show slave status\G;
13.开启同步:
start slave;
再次查看
14.在12创建表和信息:
use test;
create table biao (
-> id int unsigned not null auto_increment, 自增长不能为空的正整型
-> name char(40) not null default ‘无’, 默认为无
-> primary key (id)); id不能重复
insert into biao (name) values (“明明”);
删除表中字段:
delete from biao where id=1;
15.11已同步:
16.换12同步11服务器的ip,user,passwd二进制文件,大小的信息
change master to master_host=‘192.168.21.11’,master_user=‘cong’,master_password=‘123’,master_log_file=‘mysql-bin.000003’,master_log_pos=513;
17.查看当前数据库同步状态:
show slave status\G;
18.开启同步:
start slave;
再次查看:
在11上创建表和信息:
insert into biao (name) values (“ddas”);
select * from biao;
两台都已同步:
五、MySQL中间键-读写分离:(ameba中间键)
原理:MySQL的主从复制和MySQL的读写分离两者有着紧密联系,首先部署主从复制,只有主从复制完了,才能在此基础上进行数据的读写分离。
简单来说,读写分离就是只在主服务器上写,只在从服务器上读,基本的原理是让主数据库处理事务性操作,而从数据库处理非事务性操作,然后再采用主从复制来把master上的事务性操作同步到slave数据库中。
11中间键 12主服务器 13从服务器
1.12主服务器:
安装MySQL软件
yum -y install mysql mysql-server
2.主服务器修改主配置文件:
vim /etc/my.cnf
log-bin=mysql-bin
server-id=12
3.启动MySQL:
service mysqld start
4.主服务器MySQL登录:
mysqladmin -uroot password 123
mysql -uroot -p
5.创建mysql普通用户并赋予权限:
grant all on . to ‘cong’@’%’ identified by ‘123’;
6.查看当前二进制日志:
show master status;
在这里插入图片描述
1.13从服务器:
安装MySQL软件
yum -y install mysql mysql-server
2.从服务器修改主配置文件:
vim /etc/my.cnf
log-bin=mysql-bin
server-id=13
3.启动MySQL:
service mysqld start
4.主服务器MySQL登录:
mysqladmin -uroot password 123
mysql -uroot -p
5.同步主服务器的ip,user,passwd二进制文件,大小的信息
change master to master_host=‘192.168.21.11’,master_user=‘cong’,master_password=‘123’,master_log_file=‘mysql-bin.000003’,master_log_pos=xxx;
6.查看当前数据库同步状态:
show slave status\G;
7.开启同步:
start slave;
8.12主服务器创建库和表:
create database hongfu;
use hongfu;
create table biao (id int, name char(20));
insert into biao values (1, “小李”);
grant all on . to ‘aaa’@’%’ identified by ‘123’;
9.13从服务器查看是否已同步:
use hongfu;
select * from biao;
10.将从服务器同步关掉,为保证实验效果: (实验环境不能关)
stop slave;
insert into biao values (2, “小文”);
grant all on . to ‘aaa’@’%’ identified by ‘123’;
11.在11服务器安装阿米巴镜像:
yum -y install mysql mysql-server
service mysqld resatrt
amoeba-n.iso
12.mkdir /mnt/ios
13.mount -o loop amoeba-n.iso /mnt/ios/
14.cp -a /mnt/ios/* .
15.tar -zxf jdk-7u40-linux-x64.gz
16.mv jdk1.7.0_40/ /usr/local/
17.ln -s /usr/local/jdk1.7.0_40/ /usr/local/jdk
18.vim /etc/profile 设置环境变量(在最后一行插入)
#jdk 环境变量
JAVA_HOME=/usr/local/jdk
export JAVA_HOME
PATH=
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:PATH
export PATH
CLASSPATH=.:
J
A
V
A
H
O
M
E
/
l
i
b
/
t
o
o
l
s
.
j
a
r
:
JAVA_HOME/lib/tools.jar:
JAVAHOME/lib/tools.jar:JAVA_HOME/lib/dt.jar:$CLASSPATH
export CLASSPATH
16.刷新
. /etc/profile
17.mkdir /usr/local/amoeba
18.unzip amoeba-mysql-1.3.1-BETA.zip -d /usr/local/amoeba/
19.cd /usr/local/amoeba/conf/
vim amoeba.xml
20.cd /usr/local/amoeba/bin/
vim amoeba:配置读写分离服务器
21.后台开启:
nohup bash -x /usr/local/amoeba/bin/amoeba &
22.查看端口:
netstat -antp | grep :9000
23.连接数据库:
mysql -uroot -p123 -P 9000 -h 192.168.21.11
use hongfu;
select * from biao;
insert into biao values (3, “小宁”);