三台虚拟机:centos7 mini-iso
数据库:Percona 5.6.24(阿里)
my.cnf地址:my.cnf
安装完成后出现pid没有的错误解决办法
所需安装包或有不懂的地方可以留言联系我
1.1 查看环境中自带的数据库并删除
rpm -qa|grep -i MariaDB
rpm -ev mariadb-libs-5.xxxxxx --nodeps
1.2 安装所需依赖
[root@mysql02 software]# yum -y install cmake gcc tcl*
1.3 Percona rpm包上传至虚机并解压,位置随意
[root@mysql02 ~]# cd /home/resources/software/mysql/
[root@mysql02 mysql]#tar -xvf Percona-Server-5.6.24-72.2-r8d0f85b-el6-x86_64-bundle.tar
[root@mysql02 mysql]# ll
总用量 241788
-rw-r--r--. 1 root root 21708 12月 28 15:51 libaio-0.3.107-10.el6.x86_64.rpm
-rw-r--r--. 1 root root 123781120 12月 28 15:51 Percona-Server-5.6.24-72.2-r8d0f85b-el6-x86_64-bundle.tar
-rw-r--r--. 1 root root 70245892 12月 28 15:51 Percona-Server-56-debuginfo-5.6.24-rel72.2.el6.x86_64.rpm
-rw-r--r--. 1 root root 6716252 12月 28 15:51 Percona-Server-client-56-5.6.24-rel72.2.el6.x86_64.rpm
-rw-r--r--. 1 root root 1029880 12月 28 15:51 Percona-Server-devel-56-5.6.24-rel72.2.el6.x86_64.rpm
-rw-r--r--. 1 root root 20452276 12月 28 15:51 Percona-Server-server-56-5.6.24-rel72.2.el6.x86_64.rpm
-rw-r--r--. 1 root root 741292 12月 28 15:51 Percona-Server-shared-56-5.6.24-rel72.2.el6.x86_64.rpm
-rw-r--r--. 1 root root 23086244 12月 28 15:51 Percona-Server-test-56-5.6.24-rel72.2.el6.x86_64.rpm
-rw-r--r--. 1 root root 1499504 12月 28 15:51 Percona-Server-tokudb-56-5.6.24-rel72.2.el6.x86_64.rpm
[root@mysql02 mysql]# pwd
/home/resources/software/mysql
1.5 提前安装libaio,防止之后安装操作出现错误
[root@mysql02 mysql]# rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm
警告:libaio-0.3.107-10.el6.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID c105b9de: NOKEY
准备中... ################################# [100%]
软件包 libaio-0.3.109-13.el7.x86_64 (比 libaio-0.3.107-10.el6.x86_64 还要新) 已经安装
file /lib64/libaio.so.1.0.0 from install of libaio-0.3.107-10.el6.x86_64 conflicts with file from package libaio-0.3.109-13.el7.x86_64
file /lib64/libaio.so.1.0.1 from install of libaio-0.3.107-10.el6.x86_64 conflicts with file from package libaio-0.3.109-13.el7.x86_64
1.6 顺序安装
建议一行一行复制安装,全复制一起可能会出错(个人经历)
[root@mysql02 mysql]#
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 --nodeps
rpm -ivh Percona-Server-server-56-5.6.24-rel72.2.el6.x86_64.rpm
如果安装Percona-Server-server出现错误:
root@mysql02 mysql]# rpm -ivh Percona-Server-server-56-5.6.24-rel72.2.el6.x86_64.rpm
警告:Percona-Server-server-56-5.6.24-rel72.2.el6.x86_64.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID cd2efd2a: NOKEY
错误:依赖检测失败:
/usr/bin/perl 被 Percona-Server-server-56-5.6.24-rel72.2.el6.x86_64 需要
perl(Data::Dumper) 被 Percona-Server-server-56-5.6.24-rel72.2.el6.x86_64 需要
解决方法:
root@mysql02 mysql]# yum install -y perl*
1.7 最后安装完成检查
2台虚拟机mysql都安装完成后查看/etc/my.cnf是否存在,不存在传入一个即可(博文最顶有本次部署的my.cnf配置文件下载地址)。
然后查看 /var/lib/mysql 目录中有没有mysql数据文件。
[root@mysql02 etc]# ll /var/lib/mysql
总用量 110608
-rw-rw----. 1 mysql mysql 12582912 12月 28 16:38 ibdata1
-rw-rw----. 1 mysql mysql 50331648 12月 28 16:38 ib_logfile0
-rw-rw----. 1 mysql mysql 50331648 12月 28 16:38 ib_logfile1
drwx------. 2 mysql mysql 4096 12月 28 16:38 mysql
drwx------. 2 mysql mysql 4096 12月 28 16:38 performance_schema
-rw-r--r--. 1 root root 131 12月 28 16:38 RPM_UPGRADE_HISTORY
-rw-r--r--. 1 mysql mysql 131 12月 28 16:38 RPM_UPGRADE_MARKER-LAST
drwx------. 2 mysql mysql 6 12月 28 16:38 test
1.8 设置密码
修改密码(localhost,其他的登录用户信息sqlyog中完成) 默认安装的mysql没有密码,输入命令mysql直接进入
开启外部访问权限
[root@mysql02 etc]# mysqladmin -u root password "root"
[root@mysql02 etc]# mysql -u root -p
mysql> grant all on *.* to 'root'@'%' identified by 'root';
2.1 修改配置文件/etc/my.cnf
修改server-id 每台设备不同
例如 :
- 主:server-id=1
- 从:server-id=2
2.2 修改完后重启服务
service mysql restart
2.3 查看主节点信息(二进制文件和position值)
登陆主节点
mysql -u root -p
记录主二进制文件(mysql-bin.000001)和position值(120)
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000001
Position: 120
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
2.4 从节点执行挂载
登陆从节点
mysql -u root -p
执行语句
CHANGE MASTER TO
MASTER_HOST=‘172.8.8.183’,
MASTER_PORT=3306,
MASTER_USER=‘root’,
MASTER_PASSWORD=‘root’,
MASTER_LOG_FILE=‘mysql-bin.000001’,
MASTER_LOG_POS=120;
ip 端口等信息根据自身情况修改。
接着启动从节点
start slave;
查看从状态
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.8.8.182
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 2058
Relay_Log_File: mysqld8202-relay-bin.000004
Relay_Log_Pos: 502
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 2058
Relay_Log_Space: 680
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
......
查看 Slave_IO_Running、Slave_SQL_Running线程是否为yes,若不是,查看刚才挂载信息是否有误,或尝试重启服务。
2.5 总结
理论来说主从复制,主负责写,从负责读,
目前完成了主从复制,虽有主从关系但是并没有维护读写分离的状态。
主库中有数据,须将数据.sql文件在从上执行再挂载,否则虽然挂在上,中继日志读取的操作只是主库最近的操作,没有库表无法执行。同理,主从复制状态下的从库删除库表,虽对主库数据没有影响,但是当其执行中继日志操作时,为主库当前操作,没有库表无法执行。
数据库复杂的集群结构 、布式数据库中,保证单个数据分片的高可用可靠性,每一个数据分片对应的数据库集群模式方式是双机热备。
简单来说就是两个mysql服务互为主从,将以上挂载在主上执行即可。
在一个节点上操作mysql 在另一个节点上查看操作是否生效。
搭建高可用数据库集群,使用Keepalived+主从HAProxy+主从mycat+数据库双主双从结构,如图:
近期更新,持续关注