数据库_PXC群集与存储引擎
1. PXC介绍与群集搭建; 2.数据存储引擎.
一, PXC介绍
1.介绍
PXC(Percona XtraDB Cluster)基于Galara的一台开源软件,应用于解决mysql的高可用集群问题,由Codership公司开发,PXC群集主要由于两部分组成:Percona Server with XtraDB和Write Set Replication patches(同步,多主复制插件).
2.特点:数据高度一致性,没有同步延迟问题;没有主从切换操作,且无需使用虚拟IP;支持InnoDB存储引擎;多线程复制;部署使用简单;支持节点自动加入,无需手动拷贝数据.
3.服务端口:
- 3306 数据库服务端口
- 4444 SST端口
- 4567 集群成员通信端口
- 4568 IST端口
- SST state snapshot transfer 全量同步
- IST incremental state transfer 增量同步
二,搭建PXC集群
1.部署环境

#vim /etc/hosts //使用本机解析主机名
192.168.4.71 pxcnode71
192.168.4.72 pxcnode72
192.168.4.73 pxcnode73
[student@room9pc01 package]$ for i in 71 72 73 //传输软件包到对应虚拟主机
> do
> scp /home/student/bin/package/PXC.tar.gz root@192.168.4.$i:/root/
> done
PXC.tar.gz 100% 196MB 98.0MB/s 00:02
PXC.tar.gz 100% 196MB 147.3MB/s 00:01
PXC.tar.gz 100% 196MB 173.9MB/s 00:01
2.部署PXC
2.1 安装软件
#rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
#yum -y install percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm
#rpm -ivh qpress-1.1-14.11.x86_64.rpm
#tar -xvf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar
#yum -y install percona-release-0.1-4.noarch.rpm
2.2 查看配置文件
# ls /etc/percona-xtradb-cluster.conf.d //配置文件的目录
mysqld.cnf mysqld_safe.cnf wsrep.cnf
- 说明: mysqld.cnf ---数据库服务运行参数配置文件; mysqld_safe.cnf ---Percona Server5.7配置文件; wsrep.cnf ---PXC集群配置文件
2.3 修改数据库服务运行参数配置文件
71]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
[mysqld]
server-id=71 //改动id为71
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin
log_slave_updates
expire_logs_days=7
72]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
[mysqld]
server-id=72 //改动id为72
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin
log_slave_updates
expire_logs_days=7
73]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
[mysqld]
server-id=73 //改动id为73
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin
log_slave_updates
expire_logs_days=7
2.4 查看Percona Server5.7配置文件
71]# cat /etc/percona-xtradb-cluster.conf.d/mysqld_safe.cnf
72]# cat /etc/percona-xtradb-cluster.conf.d/mysqld_safe.cnf
73]# cat /etc/percona-xtradb-cluster.conf.d/mysqld_safe.cnf
2.5 需改PXC集群配置文件
71]vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
wsrep_cluster_address=gcomm://192.168.4.71,192.168.4.72,192.168.4.73 //集群成员列表
wsrep_node_address=192.168.4.71 //本机ip地址
wsrep_cluster_name=pxc-cluster //集群名称,3台机器必须一致
wsrep_node_name=pxcnode71 //本机的hostname
wsrep_sst_auth="sstuser:123456" //sst数据同步授权用户
72]vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
wsrep_cluster_address=gcomm://192.168.4.71,192.168.4.72,192.168.4.73
wsrep_node_address=192.168.4.72
wsrep_cluster_name=pxc-cluster
wsrep_node_name=pxcnode72
wsrep_sst_auth="sstuser:123456"
73]vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
wsrep_cluster_address=gcomm://192.168.4.71,192.168.4.72,192.168.4.73
wsrep_node_address=192.168.4.73
wsrep_cluster_name=pxc-cluster
wsrep_node_name=pxcnode73
wsrep_sst_auth="sstuser:123456"
2.6 启动服务,添加授权用户
注意,只在一台机器上启动服务即可,当前以在192.168.4.71上启动服务为例
71]# systemctl start mysql@bootstrap.service //启动PXC服务
[root@pxcnode71 PXC]# grep 'pass' /var/log/mysqld.log
2019-06-21T03:48:41.965682Z 1 [Note] A temporary password is generated for root@localhost: aBZIAuvq<1Ti //查看mysql的初始密码
# mysql -uroot -p'aBZIAuvq<1Ti' //使用初始密码登录
mysql> alter user root@"localhost" identified by '123456'; //更改密码
mysql> grant reload,lock tables,replication client,process on *.* to sstuser@"localhost" identified by '123456'; //授权用户sstuser
2.7 在4.72和4.73的主机上启动mysql服务
72]# systemctl start mysql
73]# systemctl start mysql
2.8 查看集群信息
71]mysql -uroot -p123456 -e 'show status like "%wsrep%"'
72]mysql -uroot -p123456 -e 'show status like "%wsrep%"'
73]mysql -uroot -p123456 -e 'show status like "%wsrep%"'
wsrep_incoming_addresses | 192.168.4.72:3306,192.168.4.73:3306,192.168.4.71:3306
wsrep_cluster_size | 3
wsrep_cluster_status | Primary
wsrep_connected | ONwsrep_ready | ON
3.0 测试集群功能
3.1 在主机4.71上授权,自动同步授权到4.72和4.73.
71]grant all on gamedb.* to yaya@"%" identified by '123456';
3.2 客户端4.50登录到服务器4.72
# mysql -h192.168.4.72 -uyaya -p123456
mysql> create database gamedb; //建库
mysql> create table gamedb.a( //建表
-> id int primary key auto_increment,name char(10));
mysql> insert into gamedb.a values(1,"tom"); //插入数据
mysql> insert into gamedb.a values(2,"jack"); //插入数据
3.3 分别在4.71,4.72,4.73上查看插入的数据
mysql> select * from gamedb.a;
+----+------+
| id | name |
+----+------+
| 1 | tom |
| 2 | jack |
+----+------+
2 rows in set (0.00 sec)
4.0 测试服务器故障,再自动恢复
71]# systemctl stop mysql //停止4.71的服务
mysql> insert into gamedb.a values(3,"tom1"); //客户端写入数据
Query OK, 1 row affected (0.16 sec)
mysql> insert into gamedb.a values(4,"jack1"); //客户端写入数据
Query OK, 1 row affected (0.12 sec)
mysql> select * from gamedb.a; //在服务器4.72和4.71查看插入的数据
+----+-------+
| id | name |
+----+-------+
| 1 | tom |
| 2 | jack |
| 3 | tom1 |
| 4 | jack1 |
+----+-------+
4 rows in set (0.00 sec)
71]# ]# systemctl start mysql@bootstrap.service //再次启动4.71的集群服务
71]# netstat -anptul|grep :3306 //查看mysql端口
71]# netstat -anptul|grep :4567 //查看集群端口
mysql> select * from gamedb.a; //查看4.71的数据同步状态
+----+-------+
| id | name |
+----+-------+
| 1 | tom |
| 2 | jack |
| 3 | tom1 |
| 4 | jack1 |
+----+-------+
4 rows in set (0.00 sec)
三,Mysql存储引擎
1.存储引擎?
作为可插拔式的组件提供,mysql自带的功能程序,专属于表的处理器;不同的存储引擎有不同的动能和存储方式.
2.查看数据库服务器可以使用的存储引擎
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.01 sec)
3.建表时,手动指定存储引擎
mysql> create database db10;
mysql> create table db10.t1(
-> id int,name char(10))engine=myisam; //建表时指定存储引擎为myisam
Query OK, 0 rows affected (0.05 sec)
mysql> show create table t1 \G; //查看存储引擎
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`id` int(11) DEFAULT NULL,
`name` char(10) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 //显示存储引擎
1 row in set (0.01 sec)
4.在数据库服务的主配置文件中修改存储引擎
#vim /etc/my.cnf
[mysqld]
default-storage-engine=myisam //指定存储引擎
# systemctl restart mysqld //重启加载配置
5.对已建表的引擎做修改
Mysql>alter table 库名.表名 engine=引擎类型;
Mysql>alter table db10.t1 engine=myisam;
6.常用存储引擎的特点
Myisam存储引擎: 不支持表级锁;不支持事务,事务回滚,外键.
Myisam的表文件: 表结构-表名.frm; 索引-表名.MYI; 数据-表名.MYD
Innodb存储引擎:支持行级锁定,支持事务,事务回滚,外键.
Innodb的表文件:表名.frm和表名.idb.
Innodb的日志文件:ibdata1,ib_logfile0,ib_logfile1
7.Mysql的锁机制
7.1 锁的力度:表级锁(整张表)与行级锁(单行)
7.2 锁的类型:a.读锁(共享锁),支持并发性读b.写锁,独立的锁,上锁期间其它线程不能读和写.
7.3 查看当前锁的状态
[root@client ~]# mysql -uroot -p123456 -e 'show status like "%table_lock%"'
+-----------------------------------------+-------+
| Variable_name | Value |
+-----------------------------------------+-------+
| Performance_schema_table_lock_stat_lost | 0 |
| Table_locks_immediate | 88 |
| Table_locks_waited | 0 |
+-----------------------------------------+-------+
8.事务的特性
Atomic原子性,事务的操作是一个整体,不可分割,要么全部成功,要么全部失败.
Consitency一致性,事务操作的前后,表中的记录没有变化.
Isolation隔离性,事务之间的操作是隔离不受彼此影响的.
Durability永久性,数据一旦提交即不可更改.
测试永久性: 开两个相同的终端4.50,在其中一个终端上做如下操作.
mysql> show variables like "autocommit";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | ON |
+---------------+-------+
1 row in set (0.00 sec)
mysql> set autocommit=off; //关闭自动提交功能
mysql> show variables like "autocommit";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | OFF |
+---------------+-------+
1 row in set (0.00 sec)
mysql> create table db10.a4(
-> id int )engine=innodb;
Query OK, 0 rows affected (0.37 sec)
mysql> insert into db10.a4 values(200);
mysql> insert into db10.a4 values(300);
mysql> select * from db10.a4; //在关闭了commit的终端可以查看到插入的数据,而另一终端却不能查看到提交的数据.
+------+
| id |
+------+
| 200 |
| 300 |
+------+
2 rows in set (0.00 sec)
mysql> commit; //执行commit后,在没有关闭commit的终端可以查看到插入的数据.
总结: 那么我们在生产环境中,建表时如何决定使用存储引擎的类型,有以下两个意见:
- 查询操作相对较多的表,适合使用myisam引擎,以节省系统资源
- 写操作相对较多的表,适合使用innodb引擎,以解决并发性访问量大的问题
结束.
数据库_PXC群集与存储引擎的更多相关文章
- MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述
MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述: 1.MySQL有多种存储引擎: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(Berk ...
- 重新学习MySQL数据库3:Mysql存储引擎与数据存储原理
重新学习Mysql数据库3:Mysql存储引擎与数据存储原理 数据库的定义 很多开发者在最开始时其实都对数据库有一个比较模糊的认识,觉得数据库就是一堆数据的集合,但是实际却比这复杂的多,数据库领域中有 ...
- Mysql数据库的触发器、存储引擎和存储过程
数据库的触发器 1.触发器 触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于BEGIN和END语句之间的一组语句): DELETE,INSERT,UPDATE 我们可以监视某表 ...
- 【转】MySQL数据库MyISAM和InnoDB存储引擎的比较
MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种.这里介绍关于这两种引擎的一些基本概念(非深入介绍). MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索 ...
- MySQL数据库MyISAM和InnoDB存储引擎的比较
MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种.这里介绍关于这两种引擎的一些基本概念(非深入介绍). MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索 ...
- MySQL数据库MyISAM和InnoDB存储引擎的比较(转)
MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种.这里介绍关于这两种引擎的一些基本概念(非深入介绍). MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索 ...
- MySQL数据库MyISAM和InnoDB存储引擎的比较【转载】
转自 http://www.cnblogs.com/panfeng412/archive/2011/08/16/2140364.html MySQL有多种存储引擎,MyISAM和InnoDB是其中常用 ...
- day 7-12 数据库的基本操作和存储引擎
一. 储备知识 数据库服务器:一台高性能计算机 数据库管理系统:mysql(mssql等),是一个软件 数据库:db1(student_db),是一个文件夹 表:studen_info 是一个文件 记 ...
- mysql数据库之基本操作和存储引擎
一.知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理系统:如mysql,是一个软件 数据库:oldboy_stu,相当于文件夹 表:student,scholl,class_list ...
随机推荐
- [洛谷P4172] WC2006 水管局长
问题描述 SC省MY市有着庞大的地下水管网络,嘟嘟是MY市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可能要将一定量的水从x处送往y处,嘟嘟需要为供水公司找到一条从A至B的水 ...
- ht-8 对arrayList中的自定义对象排序( Collections.sort(List<T> list, Comparator<? super T> c))
package com.iotek.set; import java.util.ArrayList; import java.util.Collections; import java.util.Co ...
- linux运维、架构之路-网络基础
一. 常用网络设备 1.交换机:实现多台主机之间互相通讯的需求 交换机实现互相通讯的要求: ①主机身份标识信息:mac地址,利用源mac和目标mac地址,进行身份信息识别 ②主机通过交换机识别目标主机 ...
- nodejs通过async/await来操作MySQL
在nodejs中从数据库得到数据后是通过回调函数来操作数据的,如果嵌套多层将非常可怕,代码逻辑和可读性将变得非常差.有时用promise也并不能很好得解决问题,因为如果用了promise后,代码将会有 ...
- Codeforces 850A - Five Dimensional Points(暴力)
原题链接:http://codeforces.com/problemset/problem/850/A 题意:有n个五维空间内的点,如果其中三个点A,B,C,向量AB,AC的夹角不大于90°,则点A是 ...
- [tyvj]P1939玉蟾宫[单调栈]
[tyvj]P1939 玉蟾宫 ——!x^n+y^n=z^n 背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 描述 这 ...
- FastDFS介绍(一)
1.简介 FastDFS对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载.文件删除)等,解决了大容量文件存储的问题,特别适合以文件为载体的在线服务,如相册网站.文档网站.图片 ...
- Python 装饰器之 functools.wraps
在看 Bottle 代码中看见 functools.wraps 这种用法. def make_default_app_wrapper(name): """ Return ...
- 2018-2019-2 20175307 实验四《Android程序设计》实验报告
任务一 实验要求和内容: Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第二十 ...
- AtCoder Grand Contest 012 B - Splatter Painting(dp)
Time limit : 2sec / Memory limit : 256MB Score : 700 points Problem Statement Squid loves painting v ...