mysql安装和 主从复制 在linux中的配置以及amoeba
1个主节点(单独的主机)
云主机01
1个从节点(单独主机)
云主机02
多台服务器的相同软件安装可以利用xshell一个同步功能完成同步安装
将一个会话的命令发送到所有的会话中执行
安装cmake(cmake的环境无需搭建)
#yum -y install cmake
截图和命令不符,可以查看yum --help
发现-y选项是所有回答yes/no的都回答yes比较省事
安装包解压(环境-->linux-->Percona的mysql安装包rpm包)
如果使用自己的虚拟机先上传在移动在解压
如果使用云主机,需要获取资源路径,使用wget来获取
#wget "{资源路径}"
将安装包移动到software(根据自己的习惯管理目录)
#mv Per****** /home/software/mysql
到software目录中执行tar命令
ls发现众多的rpm文件
生成一个管理文件mysql
mkdir mysql
将所有文件移动到mysql目录中
#mv *rpm mysql
在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查看
-h, --hash print hash marks as package installs (good with -v)
-i, --install install package(s)
-v, --verbose provide more detailed output
按照上面的顺序依次安装rpm文件
第四个rpm文件如果出现以下问题
需要安装libaio(环境-->linux-->libaio的rpm包)
在软件地址中有对应文件的rpm,使用wget就可以获取
重新安装percona的server
需要用到的rpm就安装完成了
安装完成后检查两配置文件
一个是/etc/my.cnf存在不存在
一个是/var/lib/mysql目录中有没有mysql数据文件
如果有说明安装基本成功
启动mysql服务
#service mysql start //自动安装到它自己制定的目录***册服务为mysql
这是就会发现/var/lib/mysql目录下的文件多了一些内容
然后可以调用另外两个命令
#service mysql status 查看服务状态
#service mysql stop 停止服务
#service mysql restart
然后在开启服务运行下面的操作
修改密码
默认安装的mysql没有密码
直接输入命令mysql就可以进入查看
所以需要我们配置访问密码,用户名root,密码root
#mysqladmin –u root password "root"
warning不用管
使用有密码的命令进入mysql
验证mysql命令是否有效
开启3306端口或者直接关闭防火墙
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
查看防火墙端口开启状态
service iptables status
开启完成
创建数据库表格和数据(导入jt.sql文件)
上传文件到/home/software/mysql目录下,jt.sql文件
在/home/softwre/mysql目录中登录mysql客户端
在客户端中执行命令
mysql>set names utf8; #防止乱码
由于wget过来的文件名字不一样,需要修改成jt.sql
mysql>source jt.sql;
检查数据是否正确
mysql>use jtdb;
mysql>select * from tb_item;
默认安装的mysql没有外部访问权限,所以需要开启访问权限
grant [权限] on [数据库名].[表名] to ['用户名']@['web服务器的ip地址'] identified by ['密码'];
mysql>grant all on *.* to 'root'@'%' identified by 'root';
然后根据以上的过程安装mysql到第二和第三台云主机中
配置主从机构
配置主服务器
编辑主master服务器配置文件/etc/my.cnf
在[mysqld]节点下加入两句话
server-id=1
log-bin=mysql-bin #启用二进制日志;
重启服务:service mysql restart
在启动或者重启mysql服务的过程中会有一些常见问题,可以参考附录3--mysql常见问题解决
登录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>unlock tables; #从启动好后,记得要解除锁定
主数据库到此配置完毕
配置从服务器
修改/etc/my.cnf增加一行
server-id=2
重启服务
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 #重启服务
注意:如果出错,可以看后面的错误信息。观察Slave_SQL_Running_State字段,它会记录详细的错误信息
测试同步状态
案例1:在主中创建表格,插入数据
观察从
案例2:将从节点中插入数据,然后在主里继续添加数据
观察主,从状态
案例3:对第二个案例的数据在主中进行变更,
观察从
由于第二步操作主从结构失效
这是发现没法同步,调用show slave status 发现已经报错
sql线程已经不工作了
id为3的重复,在从中有数据了
重新挂接
错误数据必须清除否则继续主从失效
查看主节点中的二进制文件名称 pos
停止从节点的从状态
stop slave
show master status;
在从节点中把查询出来的最新数据放到命令里挂接主节点
启动从节点的slave
start slave
但是这个时候发现id为3的对应b1字段的值没有改
所以mysql虽然支持主从关系但是并没有维护读写分离的状态