首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >IT不打烊的tdsql_mysql学习记录1

IT不打烊的tdsql_mysql学习记录1

原创
作者头像
用户11796318
修改2026-03-24 23:30:47
修改2026-03-24 23:30:47
1010
举报

#安装准备

ip\dns\yum

关闭fw\selinux

修改主机名

配置hosts

hostnamectl set-hostname tdsql04

vim /etc/hosts

scp /etc/hosts root@192.168.0.101:/etc/hosts

挂载/dada

mkfs.xfs /dev/vdb

vim /etc/fstab

/dev/vdb /data xfs defaults 1 1

mount -a

免密认证

ssh-keygen

ssh-copy-id root@192.168.0.103

========================================================

安装

unzip tdsql_10.3.22.6.0.x86_64.zip

cd tdsql_10.3.22.6.0/tdsql_install/scripts/

./start_deploy.sh

CPU:请填写CPU实际逻辑核数

内存:请填写实际内存绝对值的75%(经验值)

磁盘:请设置为实际磁盘空间(RAID后)绝对值的75%~90%。其中建议数据盘:日志盘的比例为3:1(经验值)

挂在目录、data

计算存储3个节点

其他一个

hdfs一个

安装web界面端口

8081

admin/123456

登录界面

http://ip/tdsqlpcloud/

admin/123456

集群管理集群设置

配置hdfs 单节点9870

创建非分布式实例

创建分布式实例

==========================================

数据库登录,都是通过proxy代理访问

分布式,-c参数查看所有set节点,多set,每个set都有一主多备,主备分布在不同服务器

mysql -h192.168.0.152 -P15002 -ussq -pHuawei12#$% -c

集中式登录,Proxy监控里查看端口和IP,端口是15xxx,主库进行修改操作,备库只能查看,

mysql -h192.168.0.151 -P15003 -u -ppasswd

drop tables t1;

==========================================

1、扩容赤兔

登录控制机

/root/tdsql_10.3.22.6.0/tdsql_install

vim tdsql_add_hosts

[tdsql_newchitu]

tdsql_newchitu1 ansible_ssh_host=192.168.0.3 --->需要填写扩容的赤兔机器ip

cd /root/tdsql_10.3.22.6.0/tdsql_install

ansible-playbook -i tdsql_add_hosts playbooks/tdsql_add_chitu.yml

在原赤兔节点执行

scp -p /data/website/tdsqlpcloud/www/config/database.php 192.168.0.102:/data/website/tdsqlpcloud/www/config/

scp -p /data/website/tdsqlpcloud/www/config/install.lock 192.168.0.102:/data/website/tdsqlpcloud/www/config/

在新赤兔节点执行

chown -R nginx:nginx /data/website

新赤兔服务地址:http://192.168.0.x/tdsqlpcloud

===================================================

2、升级

上传升级工具包/data目录

tdsql_10.3.22.6.0_WEB_UPGRADE.x86_64.zip

tdsql_10.3.22.6.0_WEB_UPGRADE

解压

unzip tdsql_10.3.22.6.0_WEB_UPGRADE.x86_64.zip

cd /data/tdsql_10.3.22.6.0_WEB_UPGRADE/tdsql_install

启动升级程序

bash scripts/upgrade.sh "/root/tdsql_10.3.22.6.0/tdsql_install"

y

http://192.168.0.154:8081

admin/Hp 赤兔的账号密码

软件包管理,上传软件包

/root/tdsql_10.3.22.6.0_WEB_UPGRADE/packages

tdsql-mysql5717-22.6.0.tl2.x86_64.tgz

tdsql-oss-22.6.3.tl2.x86_64.tgz

组件升级,同步组件状态

先升级DB公共包

在升级OSS

最后升级实例

实例 升级 存储节点(只能升备机,主需要主备切换)

\s 检查数据库版本

=======================================================

3、启动hdfs(重启第一节点,需执行)

su - tdsql

hdfs --daemon start journalnode

2)在hdfs1和hdfs2上启动namenode

hdfs --daemon start namenode

3)在hdfs1和hdfs2上启动zkfc

hdfs --daemon start zkfc

4)在所有hdfs机器上启动datanode

hdfs --daemon start datanode

hdfs dfsadmin -report

==================================================

重做备机(非分布式,重新安装一个新节点,同步数据之后,删除旧节点)

添加备机(添加一个新节点,从备节点同步数据)

主备切换

====================================================

4、dcn同步

新建一个数据库,容灾模式与源数据库一直,如一主一备,新数据库,不能有任何数据和账号信息

然后“数据同步”选中dcn同步,可以是不同集群的实例同步,也可以是同集群不同实例同步。

删除同步实例,需要先把dcn同步关闭,并删除

===================================================

5、备份

先把hdfs服务器配置好,在集群管理-集群设置-点击集群-修改配置,服务器列表HDFS,单节点端口:9870

,分布式数据库备份,会提示OC解密失败,可能是数据库还没有完全启动,可以等一会,多尝试几次

===================================================

6、回档

集中数据库会重新按源数据库模式,进行一比一复制,执行sql语句,回档操作

====================================================

7、闪回

主动闪回,有仅写日志和真正闪回,忽略闪回范围内DDL

可根据时间和guid闪回

查询 TDSQL MySQL 的 GUID

GTID(Global Transaction Identifier,全局事务标识符)用于标识每一个已提交的事务,以下是查询方式:

分布式数据库只能用时间闪回,不能用gtid

集中数据库闪回

2026-03-25 04:43:23

MySQL [test]> select * from bb;

+---+------+

| a | b |

+---+------+

| 1 | 1 |

| 2 | 2 |

| 3 | 3 |

+---+------+

3 rows in set (0.00 sec)

MySQL [test]> delete from bb where a=1;

Query OK, 1 row affected (0.00 sec)

MySQL [test]> select * from bb;

+---+------+

| a | b |

+---+------+

| 2 | 2 |

| 3 | 3 |

+---+------+

2 rows in set (0.00 sec)

-----------------------

执行闪回,尽写日志,

闪回时间:2026-03-25 04:43:23

只有主节点有闪回日志,备节点没有闪回日志

[root@tdsql02 sql]# pwd

/data/tdsql_run/4004/mysqlagent/sql

[root@tdsql02 sql]# ls

dcn.sql masterFlashback.sql report.sql slowlog.sql

--------------------------

执行闪回,真正闪回

闪回时间:2026-03-25 04:43:23

按时间闪回,不知道为啥没有闪回????

================================

分布式数据库创建表

--------------------------------

8、#创建单表:分布式数据库,必须要有主键key

建库

-- 1. 创建数据库

CREATE DATABASE IF NOT EXISTS mydb

CHARACTER SET utf8mb4

COLLATE utf8mb4_unicode_ci;

-- 2. 查看是否创建成功

SHOW DATABASES;

-- 3. 切换到该数据库

USE mydb;

-- 4. 查看当前数据库

SELECT DATABASE();

-- 5. 删除数据库(谨慎操作)

DROP DATABASE IF EXISTS mydb;

----------------------------------------

表的创建

create table single_t(a int,b int,PRIMARY KEY(a));

表的删除

DROP TABLE 表名;

---------------------------------------

数据的增

insert into single_t(a,b) values (3,4);

UPDATE single_t SET b = 100 WHERE a = 3;

DELETE FROM single_t WHERE a = 3;

查查询数据

select * from single_t;

----------------------------------

9、#创建广播表:

create table global_t(a int,b int,PRIMARY KEY(a)) shardkey=noshardkey_allset;

----------------------------------

11、#创建一级HASH

create table test1(a int,b int,c char(20),primary key(a)) shardkey=a;

insert into t1(a,b,c) values (1,1,'aaa');

----------------------------------

12、#创建一级range分区

create table t1(a int key ,b int) tdsql_distributed by range(a) (s1 values less than(100),s2 values less than(200));

----------------------------------

13、#创建一级分表LIST分区

create table t2(a int key ,b int) tdsql_distributed by list(a) (s1 values in(1,2),s2 values in (3,4));

----------------------------------

14、#创建二级RANGE分区

CREATE TABLE employees_int(

id INT key NOT NULL,

fname VARCHAR(30),

lname VARCHAR(30),

hired date,

Separated DATE NOT NULL DEFAULT'9999-12-31',

job_code INT,

store_id INT

)

shardkey=id

PARTITION BY RANGE(year(hired))(

PARTITION P0 VALUES LESS THAN(1991),

PARTITION P1 VALUES LESS THAN(1996),

PARTITION P2 VALUES LESS THAN(2001)

);

----------------------------------

15、#创建二级LIST分区

CREATE TABLE customers_1 (

first_name VARCHAR(25) key,

last_name VARCHAR(25),

street_1 VARCHAR(30),

street_2 VARCHAR(30),

city VARCHAR(15),

renewal DATE)

shardkey=first_name

PARTITION BY LIST(city) (

PARTITION pRegion_1 VALUES IN('Beijing','Tianjin','Shanghai'),

PARTITION pRegion_2 VALUES IN('chongqing','Wulumuqi','Dalian'),

PARTITION pRegion_3 VALUES IN('Suzhou','Hangzhou','Xiamen'),

PARTITION pRegion_4 VALUES IN('Shenzhen','Guangzhou','chengdu'));

插入数据

INSERT INTO customers_1 (first_name, last_name, street_1,street_2, city,renewal) VALUES('Alice','Wang','123 Main St','Apt 4','Beijing','2023-01-01');

#删除和新增二级分区

alter table customers_1 drop partition pRegion_1;

alter table customers_1 add partition(partition pRegion_5 VALUES IN( 'Wuhan','Nanjing','Guiyang'));

explain SElEcT u.username,u.phone FRoM orders o JoIN users u ON o.user_id = u.user_id WHERE o.user_id=99968;

ALTER TABLE orders add idx_user_id(user_id);

----------------------------------

16、#创建序列

-- 设置最大值,其他未定义项均选择默认值,创建序列成功后,可在 MYSQL.TDSQL_SEQUENCES 表中查看到序列元数据

CREATE DATABASE db_employees;

use db_employees;

CREATE TDSQL_SEQUENCE my_sequence start with 1 tdsql_minvalue 1 tdsql_maxvalue 50000 tdsql_increment by 5;

create table employees (

id int primary key,

first_name varchar(50),

last_name varchar(50)

) shardkey=id;

insert into employees(id,first_name,last_name) values (tdsql_nextval(my_sequence),'Jane','doe');

select tdsql_nextval(my_sequence);

SHOW CREATE TDSQL_SEQUENCE my_sequence;

alter tdsql_sequence my_sequence tdsql_increment by 5 tdsql_maxvalue 2000000 ;

==================================

17、分布式数据库注释透传功能

-- set数量、名称、ip、hash_range范围、主备节点等

/*proxy*/show status;

-- 一致性读(consistent_read)是否开启、日志相关等

/*proxy*/show config;

/*sets:set_1*/

/*sets:set_1,set_2*/ (set名字可以通过/*proxy*/show status查询)

/*sets:allsets*/select * from global_t;

=======================================

18、索引:

创建索引

-- 方式1:CREATE INDEX(推荐,语法清晰)

CREATE [索引类型] INDEX `索引名` ON `testdb`.`orders`(`字段名1` [排序方式], `字段名2`...);

-- 方式2:ALTER TABLE(适合批量修改表结构时)

ALTER TABLE `testdb`.`orders` ADD [索引类型] INDEX `索引名`(`字段名1`, `字段名2`...);

单索引

 alter table testdb.orders add index index_user_id(user_id);

复合索引

create index idx_user_id_amount on  testdb.orders(user_id,amount);

a 的单列索引

CREATE INDEX idx_a ON aa (a);

a、b 的联合索引

CREATE INDEX idx_a_b ON aa (a, b);

删除单列索引 idx_a

DROP INDEX idx_a ON aa;

删除联合索引 idx_a_b

DROP INDEX idx_a_b ON aa;

通过赤兔平台进行性能分析,诊断冗余索引

=======================

19、查询事务状态

默认隐式自动提交

-- 查看当前 autocommit 状态

SHOW VARIABLES LIKE 'autocommit';

-- 关闭自动提交(每次操作需手动 COMMIT)

SET autocommit = 0;

-- 开启自动提交(每条 SQL 自动提交,默认状态)

SET autocommit = 1;

常用事务控制语句

START TRANSACTION; -- 开启事务

COMMIT; -- 提交事务,永久保存

ROLLBACK; -- 回滚事务,撤销所有更改

SAVEPOINT sp1; -- 设置保存点

ROLLBACK TO SAVEPOINT sp1; -- 回滚到指定保存点

RELEASE SAVEPOINT sp1; -- 释放保存点

举例:

-- 1. 开启事务

START TRANSACTION;

-- 2. 执行 SQL 操作(以 aa 表为例)

INSERT INTO aa (a, b) VALUES (1, 100);

INSERT INTO aa (a, b) VALUES (2, 200);

UPDATE aa SET b = 300 WHERE a = 1;

-- 3. 提交事务(确认保存)

COMMIT;

-- 或者回滚事务(撤销所有操作)

-- ROLLBACK;

======================================

20、数据库同步故障检测

-------------------------------------------------------------

分布式:这个4004,通过在赤兔,分布式数据库,DB监控,查看set备节点的端口

查看登录备机,查看状态

cd /data/tdsql_run/4004/mysql-server-8.0.24/install

./jmsyql.sh 4004

show slave status\G;

[root@tdsql01 install]# ./jmysql.sh 4003

cmd: e

/data/tdengine/data/4003/prod/mysql.sock

/data/tdsql_run/4003/mysql-server-8.0.24

mysql: [Warning] Using a password on the command line interface can be insecure .

Welcome to the TXSQL monitor. Commands end with ; or \g.

Your TXSQL connection id is 9248

Server version: 8.0.33-v24-txsql-22.4.1-20230926 Source distribution

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

txsql> show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.0.152

Master_User: tdsqlsys_repl

Master_Port: 4003

Connect_Retry: 60

Master_Log_File: binlog.000008

Read_Master_Log_Pos: 743385

Relay_Log_File: relay.000017

Relay_Log_Pos: 743205

Relay_Master_Log_File: binlog.000008

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

------------------------------------------------------

集中式数据库,登录备节点数据库执行

show slave status\G;

===============================================================

21、Tdsql-读binlog日志

-- 查看当前正在写入的 Binlog 文件及位置

SHOW MASTER STATUS;

分布式数据库

ps -ef |grep 4003

解析binlog日志工具路径

/data/tdsql_run/4002/mysqlagent/bin/mysqlbinlog

日志目录

cd /data/tdengine/log/4002/dblogs/bin

在日志目录下执行解析binlog日志:

/data/tdsql_run/4003/mysql-server-8.0.24/bin/mysqlbinlog -vv binlog.000001 > /tmp/testbinlog.txt

===============================================================

22、分布式数据库特性测试:异常场景处理:死锁处理机制

开启事务:

start transaction;

以分片表为例(但不限于,尽量展示能力):制造分片表在不同数据节点的死锁。1.建立一个数据库连接,语句如下:

Session1;

begin;

select * from customer where id=8 for update;

执行完成上一步后,再另外建立一个数据库连接,语句如下:

Session 2:

begin;

delete from customer where id=2;

回到sessionl

update customer set name='nichunyang' where id=2;

在到session2执行

2.

select * from customer where id=8 lock in share mode;

观察死锁情况

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档