关系型数据库-MySQL进阶(五)搭建PX 数据库高可用集群与数据库引擎

搭建PXC 数据库高可用集群

PXC :Percona XtraDB Cluster
高可用集群
 PXC 特点 
   1数据强一致性,无同步延时
 2没有主从切换操作,无需使用虚拟ip
   3支持innodb引擎
 4多线程复制
   5部署简单
 6支持节点自动加入,无需手动拷贝数据

环境准备:三台主机
71 72 73

主要组成:Percona Server with XtraDB
Write set Repllication patches(同步多主复制插件)
官网http://galeracluter.com

Snapshot :快照
部署软件

9200:HA健康检查

vim /etc/hosts
 配置域名解析
192.168.4.71 pxcnode1
192.168.4.72 pxcnode
cd PXC/
Rpm -ivh libev
Yun -y install percona-xtrabackup
Rpm -ivh qpress
Tar -xvf Percona-XtraDB-Cluster-5.7
Yum -y install percona-xtraDB-cluster

配置文件
所在目录:/etc/percona-xtradb-cluster.conf.d/
Mysqld.conf         数据库服务运行参数配置
Mysqld_safe.conf 5.7    配置文件
Wsrep.cnf PXC集群配置文件
(1)配置数据库库服务运行参数配置文件
Mysqld.conf

cd /etc/percona-xtradb-cluster.conf.d/
分别:

Vim mysqld.conf

Server_id=71\72\73

(2)
Vim Wsrep.cnf

wsrep_cli\uster_address=gcomm://192.168.4.71\72\73 -集群成员列表
Wsrep_node_address=192.168.4.71  -本机ip
Wsrep_cluster_name=pxc-cluster 默认必须相同 -集群名称
Wsrep_node_name=pxcnbode 71  -本机主机名
Wsrep_ssl_auth=”sstuser:123456” -sst数据同步授权用户

3重启集群服务
(1)Systemct start mysql@bootsrtap.service          -重启
(2)Grep pass /var/log/mysqld.log -得到初始密码
(3)Mysql -uroot -p”初始密码”       
(4)mysql> alter user root@”localhost” identified by “123456” -修改密码
(5)Mysql> grant reload (导入导出数据)lock tables(锁表) replication client(主从), process on(进程开启) . to sstuser@”localhost” identified by “123456”;          -授权用户
(6)
72 73
Systemctl start mysql 启用数据库服务

Ss -antulp | grep :3306
Ss -antulp | grep :4567

4测试配置
测试集群功能

1查看集群信息
Mysql>Show status like “%wsrep%”
Wsrep_incomming_address =…
Wsrep_cluster_size 3
Wsrep_cluster_status primary
Wsrep_connected on
Wsrep_ready on

Primary
主要的;最重要的;基本的;最初的;最早的;初等教育的;小学教育的

2在任意一台服务器上添加访问授权用户sstuser 71授权
Grant all on db10.* to yaya@”%” identified by “123456”;
3查授权72\73
mysql -uroot -p123456 -e “show grants for yaya10@”%""

4访问在服务器 71
建库建表写数据,建表必须要有主键 -auto_increment
Cretae datebase db10;
Create table db10.a(id int primary key auto_increment ,name char(10));
Insert into db10.a(name) values(“tom”);
5client 连接到71 72 73 都可以看到有插入的数据


测试故障自动恢复
任何一台数据库服务宕机都不影响用户存取数据
服务运行后自动同步宕机期间数据
停止72 systemctl stop mysql
插入数据 71  insert into db10.a(name) values(“jim”);
客户端访问 Client :mysql -h192.168.4.71\73 -uyaya10 -p123456
重启72 systemctl start mysql
Ss -ntulp | grep :3306
SS -ntulp | grep :3306
Mysql -h192.168.4.71 \73

查看到72也是有数据的,自动同步数据的
Mysql -h192.168.4.72 -uyaya10 -p123456


Mysql 存储引擎

1存储引擎介绍 :作为可插拔式的组件提供

Mysql 服务自带功能程序,处理表的处理器
不同存储引擎不同功能和数据存储方式
Mysql 5.0-5.1 MyISAM
Innodb5.5-5.6 innodb

Client Mysql> Show engines; -查看数据库存储引擎
show create table db10.a;  -查看表的存储引擎

简述 MySQL 体系结构的组成,并描述每个组成部分的作用。
主要包括 8 个部分:

管理工具:备份,恢复,安全,移植,集群等,这些工具一般和文件系统打交道,不需要和mysql-server 打交道,它们对应的都是命令。

连接池:进程数限制、内存检查、缓存检查等。

SQL 接口:用户通过 sql 客户端发过来的命令,由 sql 接口接收,sql 操作(DML 数据操作语言:查询、修改、升级数据等;DDL 数据定义语言:创建一个新的数据库、新的索引、删除一个用户等;存储过程、视图触发器。

分析器: 分析查询语句 事务处理 对象访问权限。

优化器: 优化访问路径 、 生成执行树。

缓存和缓冲:保存 sql 查询结果。

存储引擎:用于管理存储的文件系统,将逻辑结构转换为物理结构的程序;不同的存储引擎有不同的功能和存储方式。

(文件系统)。
文件日志

2修改表存储引擎
建表时手动指定
Show create table 表\G;
Mysql > create table db10.a(
Name char(40)
)Engine=innodb;

3修改服务存储引擎

Systemctl stop mysqld
Vim /etc/my.cnf
[mysqld]
Default-storage-engine=myisam
Systemctl restart mysqld
Mysql > mysql -uroot -p123456
Show engines;

4 修改表使用引擎

1 Create table db10.d(name char )
2 Show create table db10.d;
ENGINE=MEMORY DEFAULT CHARSET=latin1 |

3 System ls /var/lib/mysql/db10/d*
/var/lib/mysql/db10/d.frm

4 Alter table db10.d engine=myisam;

5 system ls /var/lib/mysql/db10/d.*
/var/lib/mysql/db10/d.frm /var/lib/mysql/db10/d.ibd

5 存储引擎特点
  myisam
    1 特点:不支持事物和事物回滚 外键

2 表文件
    Frm 表结构
    MYI  索引
    MYD  数据

Innodb
1 特点:支持行级锁定
 支持事物,事物回滚,外键
2 表文件
Frm
Ibd 数据索引 innodb index
3 事物日志文件
_Ibdata1  undo
_ib_logfile0 redo日志
_ib_logfile1

MySQL 锁机制
表级锁
行级锁 仅仅对被访问的行枷锁

锁类型
读锁(共享锁) 支持并发读
写锁 (独占锁)

事物特性
事物
事物回滚rollback

ACID
Innodb事物特性
A atomic    原子性
事物的整个操作是一个整体,不可分割,要么全部成功,要么全部失败
C consistency   一致性
事务操作前后,表中记录没变化
I isolation     隔离性
事物操作是相互隔离不受影响的
D durability    持久性

1 查看client 1自动提交功能
show variables like “autocommit”;
±--------------±------+
| Variable_name | Value |
±--------------±------+
| autocommit | ON |
  2关闭自动提交功能
set autocommit=off;

3创建表
create table db10.t1(name char(100)) engine=innodb;

4client2查看表
表没有特点,数据有
Client1 插入新纪录
insert into db10.t1(name) values(“yom”);

Client 1 :select * from db10.t1;  
±-----+
| name |
±-----+
| yom |
Client2 看不到数据
(隔离性)
5client 1执行提交命令
Client 2 查看表记录

6关闭commit
测试rollback

set autocommit=off;
insert into db10.t1 values(“aha”),(“girl”);
select * from db10.t1; client2 看不到”girl”因为关闭了commit
rollback;client1 会回到最初表空白状态
开启Commit;
Client 2 可以看到数据了select * from db10.t1;

| aha |
| girl |
±-----+

show status like “table_lock%”;
±----------------------±------+
| Variable_name | Value |
±----------------------±------+
| Table_locks_immediate | 100 |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~上善若水~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值