mysql安装和 主从复制 在linux中的配置以及amoeba



1个主节点(单独的主机)

云主机01

1个从节点(单独主机)

云主机02

 

多台服务器的相同软件安装可以利用xshell一个同步功能完成同步安装

 

将一个会话的命令发送到所有的会话中执行

 

安装cmake(cmake的环境无需搭建)

#yum -y install cmake

 mysql安装和 主从复制 在linux中的配置以及amoeba

截图和命令不符,可以查看yum --help

发现-y选项是所有回答yes/no的都回答yes比较省事

 

 

安装包解压(环境-->linux-->Percona的mysql安装包rpm包)

如果使用自己的虚拟机先上传在移动在解压

 mysql安装和 主从复制 在linux中的配置以及amoeba

如果使用云主机,需要获取资源路径,使用wget来获取

#wget "{资源路径}"

 

将安装包移动到software(根据自己的习惯管理目录)

#mv Per****** /home/software/mysql

software目录中执行tar命令

 mysql安装和 主从复制 在linux中的配置以及amoeba

ls发现众多的rpm文件

 mysql安装和 主从复制 在linux中的配置以及amoeba

生成一个管理文件mysql

mkdir mysql

将所有文件移动到mysql目录中

#mv *rpm mysql

 mysql安装和 主从复制 在linux中的配置以及amoeba

mysql目录中执行rpm安装命令

rpm命令可以理解为专门对rpm格式的文件进行解压安装的功能命令

这里我们需要rpm安装4个文件,顺序不能错乱

#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

ivh的含义可以调用rpm --help查看

 mysql安装和 主从复制 在linux中的配置以及amoeba

-h, --hash                       print hash marks as package installs (good with -v)

 mysql安装和 主从复制 在linux中的配置以及amoeba

 -i, --install                    install package(s)

 mysql安装和 主从复制 在linux中的配置以及amoeba

 -v, --verbose                    provide more detailed output

 mysql安装和 主从复制 在linux中的配置以及amoeba

按照上面的顺序依次安装rpm文件

 mysql安装和 主从复制 在linux中的配置以及amoeba

 mysql安装和 主从复制 在linux中的配置以及amoeba

 mysql安装和 主从复制 在linux中的配置以及amoeba

 

 

第四个rpm文件如果出现以下问题

 mysql安装和 主从复制 在linux中的配置以及amoeba

需要安装libaio(环境-->linux-->libaio的rpm包)

在软件地址中有对应文件的rpm,使用wget就可以获取

 mysql安装和 主从复制 在linux中的配置以及amoeba

重新安装percona的server

 mysql安装和 主从复制 在linux中的配置以及amoeba

需要用到的rpm就安装完成了

 

安装完成后检查两配置文件

一个是/etc/my.cnf存在不存在

 mysql安装和 主从复制 在linux中的配置以及amoeba

一个是/var/lib/mysql目录中有没有mysql数据文件

 mysql安装和 主从复制 在linux中的配置以及amoeba

如果有说明安装基本成功

 

启动mysql服务

#service mysql start //自动安装到它自己制定的目录***册服务为mysql

这是就会发现/var/lib/mysql目录下的文件多了一些内容

 mysql安装和 主从复制 在linux中的配置以及amoeba

然后可以调用另外两个命令

#service mysql status 查看服务状态

 mysql安装和 主从复制 在linux中的配置以及amoeba

#service mysql stop 停止服务

 mysql安装和 主从复制 在linux中的配置以及amoeba

#service mysql restart

然后在开启服务运行下面的操作

 

修改密码

默认安装的mysql没有密码

直接输入命令mysql就可以进入查看

 mysql安装和 主从复制 在linux中的配置以及amoeba

 

 mysql安装和 主从复制 在linux中的配置以及amoeba

所以需要我们配置访问密码,用户名root,密码root

#mysqladmin –u root password "root"

 mysql安装和 主从复制 在linux中的配置以及amoeba

warning不用管

使用有密码的命令进入mysql

 mysql安装和 主从复制 在linux中的配置以及amoeba

验证mysql命令是否有效

 mysql安装和 主从复制 在linux中的配置以及amoeba

 mysql安装和 主从复制 在linux中的配置以及amoeba

 

开启3306端口或者直接关闭防火墙

/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

 mysql安装和 主从复制 在linux中的配置以及amoeba

查看防火墙端口开启状态

service iptables status

 mysql安装和 主从复制 在linux中的配置以及amoeba

开启完成

 

创建数据库表格和数据(导入jt.sql文件)

上传文件到/home/software/mysql目录下,jt.sql文件

 mysql安装和 主从复制 在linux中的配置以及amoeba

/home/softwre/mysql目录中登录mysql客户端

 mysql安装和 主从复制 在linux中的配置以及amoeba

在客户端中执行命令

mysql>set names utf8;                #防止乱码

 mysql安装和 主从复制 在linux中的配置以及amoeba

由于wget过来的文件名字不一样,需要修改成jt.sql

 mysql安装和 主从复制 在linux中的配置以及amoeba

mysql>source jt.sql;

 mysql安装和 主从复制 在linux中的配置以及amoeba

检查数据是否正确

mysql>use jtdb;

mysql>select * from tb_item;

 mysql安装和 主从复制 在linux中的配置以及amoeba

 

默认安装的mysql没有外部访问权限,所以需要开启访问权限

grant [权限] on [数据库名].[表名] to ['用户名']@['web服务器的ip地址'] identified by ['密码'];

mysql>grant all on *.* to 'root'@'%' identified by 'root';

 mysql安装和 主从复制 在linux中的配置以及amoeba

然后根据以上的过程安装mysql到第二和第三台云主机中

 



                                    配置主从机构

配置主服务器

编辑主master服务器配置文件/etc/my.cnf

[mysqld]节点下加入两句话

server-id=1

log-bin=mysql-bin        #启用二进制日志;

 mysql安装和 主从复制 在linux中的配置以及amoeba

重启服务:service mysql restart

在启动或者重启mysql服务的过程中会有一些常见问题,可以参考附录3--mysql常见问题解决

 mysql安装和 主从复制 在linux中的配置以及amoeba

登录mysql:mysql –uroot -proot

mysql>flush tables with read lock;   #数据库锁表,不让写数据;这步骤可不做

对于当前环境的mysql无需使用lock命令,因为没有人操作,但是生产环境中必须这样做

mysql>show master status;    #查看MASTER状态(这两个值File和Position)其中的file就是二进制文件,position记录当前操作sql的步骤数(注意一条sql包含多步,所以不是sql语句的条数)

 mysql安装和 主从复制 在linux中的配置以及amoeba

mysql>unlock tables;        #从启动好后,记得要解除锁定

主数据库到此配置完毕

配置从服务器

修改/etc/my.cnf增加一行

server-id=2

 mysql安装和 主从复制 在linux中的配置以及amoeba

重启服务

service mysql restart

通过mysql命令配置同步日志的指向:

mysql>change master to master_host='106.75.74.254', master_port=3306,

master_user='root',master_password='root',

master_log_file='mysql-bin.000001',

master_log_pos=120;

master_host        主服务器的IP地址

master_port        主服务器的PORT端口

master_log_file    和主服务器show master status中的File字段值相同

master_log_pos        和主服务器show master status中的Position字段值相同

mysql>start slave;                #stop slave;停止服务,出错时先停止,再重新配置

mysql>show slave status\G;        #查看SLAVE状态,\G结果纵向显示。必须大写,这个命令无法再sqlyog中使用

service mysql restart        #重启服务

 mysql安装和 主从复制 在linux中的配置以及amoeba

 

 mysql安装和 主从复制 在linux中的配置以及amoeba

 

注意:如果出错,可以看后面的错误信息。观察Slave_SQL_Running_State字段,它会记录详细的错误信息

 

测试同步状态

案例1:在主中创建表格,插入数据

观察从

案例2:将从节点中插入数据,然后在主里继续添加数据

观察主,从状态

 mysql安装和 主从复制 在linux中的配置以及amoeba

案例3:对第二个案例的数据在主中进行变更,

观察从

由于第二步操作主从结构失效

 

这是发现没法同步,调用show slave status 发现已经报错

 mysql安装和 主从复制 在linux中的配置以及amoeba

sql线程已经不工作了

 mysql安装和 主从复制 在linux中的配置以及amoeba

id为3的重复,在从中有数据了

 

重新挂接

错误数据必须清除否则继续主从失效

查看主节点中的二进制文件名称 pos

停止从节点的从状态

stop slave

 mysql安装和 主从复制 在linux中的配置以及amoeba

show master status;

 mysql安装和 主从复制 在linux中的配置以及amoeba

在从节点中把查询出来的最新数据放到命令里挂接主节点

 mysql安装和 主从复制 在linux中的配置以及amoeba

启动从节点的slave

start slave

 mysql安装和 主从复制 在linux中的配置以及amoeba

但是这个时候发现id为3的对应b1字段的值没有改

 

所以mysql虽然支持主从关系但是并没有维护读写分离的状态