黄东旭解析 TiDB 的核心优势
552
2024-03-26
�Ͱ汾 TiDB �ܱ����֧�ֲ����ƣ���Ͱ汾�� cdc ��֧�ֲ������ƣ����ڴ�й¶����ȣ�
ʵ�ʹ����д����� TiDB �� panic bug��
�ڽ�����Ч�Ĵ��£����� TiDB �����ܻ���������
Ϊ��������ʵ��ҵ����
TiDB ��������Ϊͣ����������ͣ����������ͣ����������ƽ��������ǿ������(�Cforce)�������˵���¹��̣�����ϸ�ڹ���չ����ֻ���ܺ��ģ�
���ض�Ӧ�汾������Ŀ��������
Upgrading component pd
Upgrading component tikv
�滻����������leaderѡ�٣�ֱ������tikv server
Upgrading component tidb
������tidb�ڵ�ʱ���ڸ�tidb�ϵ����лỰ����Ͽ�
Upgrading component prometheus��grafana��alertmanager
�ŵ㣺
ʱ��̣������������ԣ�����һ��200G���ҵ�tikv�ڵ��ʱ1�������ң�
��������ɿ�
���գ�
��������ʽǿ�����������������У����ǰ��Ӧ�������leader��������������ж�дʧ�ܵ��������
��4��ʧ��ʱ��������Ҫ����������
���ض�Ӧ�汾������Ŀ��������
Upgrading component pd
Upgrading component tikv
������tikvʱ���������leader(��ʱĬ��10���ӣ��ɵ�)���������ýڵ�
Upgrading component tidb
������tidb�ڵ�ʱ���ڸ�tidb�ϵ����лỰ����Ͽ�
Upgrading component prometheus��grafana��alertmanager
�ŵ㣺
��������ʽΪƽ��������ǰ���Ǹýڵ��ϵ�leader�����ڹ涨ʱ����������ϣ��������ж�дʧ�ܵ����������tidb�������ʱ���⣩
���գ�
����ʱ��ϳ����ٸ����������3pd��3tidb��100tikv����ô����������ʱ������Ϊ 100(�ڵ�����) * 10m(Ĭ�ϳ�ʱʱ��) + pd + tidb + ��أ����Ǽ��� pd + tidb + ��ص�����ʱ��Ϊ 10m����ô��������ʱ��Ϊ 16h
�����3.1��ʧ��ʱ��Ⱥ���İ汾״̬�п����� һ�����°汾��һ���־ɰ汾������������������pd�ڵ�Ϊv540 tikv �ڵ�Ϊ v409������û��ʲô���⣩
�� 4 ��ʧ��ʱ��������Ҫ���������ƣ�ͬ�ϣ�
�ر� TiDB ����ʵ�� (�������)
�������ؼ��滻
���� TiDB ʵ��
���գ���˵����ͣ��ά��
Ҫ֪ͨǰ��ҵ�����ýӿڻ�������쳣����Ҫ��error��־���������µ�ǰ��Ӧ�ñ���
��ͣ��ά��ʱһ��Ҫ��������Ӳ����飬��Ҫ��Ӳ�̣��ڴ棬���壬��Դ�ȣ�����ܹز��ܿ��Ǿ������ˣ����������¼�
���Ǵ����ܽ���ÿ��������ʽ����ȱ�����£�
�ŵ�
����
ƽ��������ҵ���д����ʧ������ʱ�䳤
����������ɿ�
ǿ����������ʱ���
��������ɿ�
����ҵ���дʧ��
ͣ����������ʱ���
��������ɿ�
ҵ��������ʱ������
����ɲμ��ٷ��ĵ�������д�ĺ�������������£�
https://docs.pingcap.com/zh/tidb/v5.4/upgrade-tidb-using-tiup
Ѱ���ʺϵĻ��˷���
SQL��������
���ܻ�������
ԭ���� TiDB ����û�л��˷����������Ҫ���˷��������������·����ο���
����ʵ��
�ŵ�
ȱ��
��ע
����һ���� / �ָ����ݿɷ���ʹ��
��ά�ɱ���
�ָ�ʱ�䳤
�����ٻ��ˣ���Ҫҵ����
�����ڶ�cdc���ܲ����Ƶ�ҵ��������TiDB �ӿ�����ʵʱͬ����ά��etl���ߵijɱ�
����pump��ticdc�ȹ���������ҵ��˫д����ʵʱͬ��
dba��ά�ɱ���
�����ƻ�����ԭ�������������˷���---�÷���ʹ�õ���TiDB �� br ���ݹ��ߣ��ѱ��ݺ�Ľ�����ݵ����ػ�s3�洢�У�ʹ���Զ������߽��лָ����������ǰ��Ⱥ����ticdc֧�ֵIJ����ƣ���ô�Ͱ汾�� TiDB ����ʹ�ø÷���������������ԣ�ȫ������ �� �������� �� �����ָ� �� �����ָ���
PS�����ַ�ʽ�Ƚϸ��ʺ���������ij���
�÷����Ƚ��Ƽ����ʺ�ticdc֧�ֱȽ����Ƶĸ߰汾tidb��������Ҫע����ͬ��������tso���ƽ��Ƿ��������л�ʱ��ҵ������һ��һ���л����ҵ���� ֻ�� �� ���� �� д ҵ����Ǩ�ƣ�������Ǩ�ƵĹ����п������������������
ҵ��˫д�����л�����ҵ�������������ݵ�д�롣�÷���dba�Ͳ��ù�������ˣ���ȫ��ҵ���Լ����ƣ�������Ҫ���������ԭ���ԣ���A��Ⱥд�ɹ���B��Ⱥдʧ�ܣ���ôӦ��ҵ����ж������Ƿ�ɹ���
�����ָ�ʱ��ɽ��ܣ���ô���˷����ǿ���ȡ��ģ���ƻ��˷����ijɱ��ϸߣ������ɱ���Ҫ�ǻ���ʵ���������ɱ���ʱ��ɱ�����֤���˷����Ŀ��������ȶ��ԣ����Լ���˾ҵ����϶ȵ�������أ�����ľ��dzɱ�������Ե�ȡ�ᡣ
������Ϊ��С�汾����ʱ���˷������Ժ��� ��540 ���� 541 ��Ϊ�Ķ����ֻ࣬��bug fix������汾����ȷʵ�б�Ҫ�����ˣ���Ϊ���ɿ����ؽ϶ࡣ
PS����5�汾��tidb�汾�ķ�������Ϊ a.b.c ��a�����ܹ�������b�����¹��ܵļ��룬c����ע��bug������ ���ܹ�.�¹���.��bug����������
һ����߳��õ���������������������������߰汾���SQL���������⣬�Ҹ��������С����師����
mysql-replay �ǹٷ��ṩ��һ�� SQL �طŵĹ��ߣ��ù���� tidb �ڵ����������� tcpdump ����ץ������Ȼ���ù��� mysql-replay ���߽��лطţ��ҿ����� asktug ���ڸù��ߵĽ��ܱȽ��٣������ҿ���д��������ߵ�ʹ�÷�������dba��Ҫ�۲��ڻطŵ�Ŀ�꼯Ⱥ���Ƿ��д�����־�����б����������Ƿ����Ŀ�꼯Ⱥ���ʺϴ�����Ų���������⣬�����ڻطŵĹ����й۲�Ŀ�꼯Ⱥ�� Grafana ��� Overview �� TiDB �� Failed Query OPM ���� tidb ���Ƿ��б����������������� 1062 ������ͻ������������Ժ��ԣ���
mysql-replay����git��https://github.com/innerr/workload-sim.tidb.ticat.git
�Ķ�ÿ���汾�� changelog���Ķ�ʱ�и����ɣ�����ֻ��Ҫ��ע�������������ݼ��ɣ������Ը��� �� tidb ��bug�� �� tidb
����������Ļ����Դ�һ���°汾��tidb����ҵ��һ����֤�Ƿ��в����������������Ȼ�����Ҫ����ҵ��������Դ��
����������һ�����ʻ��������ܻ������⣬���������Ե���ҵ����DBA����SQL�����ˣ�SQL ����� TiDB ��Ҫô���ڹ���Ҫô���ڴ�����ѡ�������������˼·���������������������ɹ�ܴ����⣺
������֮ǰ����Ҫ�����еı����н����ȼ�飬�Խ����Ƚϵ͵ı��ֶ��ռ�ͳ����Ϣ���û��ڴ��۵�����ѡ���ȷ��ͬʱҲ�������ܼ�С�����
�����Ѿ���ִ�мƻ�����Ϊ�������Ĺ����з��� 4 �� 5 �汾�� mysql.bind_info �б��ṹ�IJ���(����source ��ͬʱ������ default_db �ֶ�Ϊ��)�����ȵķ����������°���ʱ��ˢ�¸ñ���
PS��5�汾��һ�����Զ�����ִ�мƻ��Ĺ��ܣ���ϵͳ�Զ��������һ��ִ�мƻ�Ȼ��洢��ϵͳ���У����������Ҫ�����Լ���ҵ�������Ƿ��
�ڳ������ij��Ⱥ�����������������Ϊ����һ��ƽ�����µIJ������������������ pd �ڵ�ʱ��ʱ�������˳������������� TiDB duration 쭸ߣ�
������ʷԭ��Ⱥ��4��pd�����Ǹ�pd���������pd_A��leader����pd_B��pd_C��pd_D
1. Ҫ���� pd_A ����Ҫ�� transfer pd leader������ pd_A ��ʼ���� ["invalid timestamp"] ���Լ���ʼѭ����������û��ͶƱ��ȥѡ���ˣ�
2. pd_B �ǹ�Ͷ������������λ���Լ�����ȷ���ܲ��ܵǻ����Լ�Ҳ��ʼ���� ["redirect but server is not leader"]
3. pd_C��pd_D ��ѡ pd_B �� leader
��ô�������ˣ�����4 pd �ﵽ������ͬ����ô���𰸱�Ȼ��û�У�������������һ���ڵ�ûͶ����Ʊ��ֻ�а���ͬ�⣬���Ե���leader����ѡ�ɹ�����������ʧ�ܣ�
��4pd�������ݺ��ٴ������������ɹ�
���ǰ� TiDB �������������� OLTP��ҵ����Ⱥ A ���ڱȽϺ��ĵ�Ⱥ����SLA�ϸߣ��ճ�ƽ��QPS 5w+��TPS 2w+�������ӽ����ڣ� HAҪ��֤ 99.99%����Ҫ�̶ȿ����֪��
������ԭ���� TiDB �汾�ȽϾ� ���������������� cdc ����֧�ֲ����ƣ��������ǶԻ������ֺͶ��������ɴ���Ҫ�Ե�ǰ�Ͱ汾 TiDB �����������Ա���չ���������ε�֧�ֹ�����
��Ⱥ��ģ��ģ��ָ���������棬һ��TB����Ĵ洢�������ڵ����϶� TiDB 20+��TiKV 40+
ά�����ڶ̣�A��Ⱥ����н� TP ��ҵ�������� AP ��ҵ���ҵ�������������ʱҵ��Ҫ��db����ͣ��
���˷�������ѣ�����ѡ��Ļ��˷����DZ��ݻָ������ݽ�����ȶ�����������ϸ˵���������ҵ�һ�λָ�����86��Сʱ��
��ȺA�漰�������ν϶࣬��Ҫ���SQL���������⣺����ǣ�������е�ҵ����
���ܻ��ˣ�δ����ʱ��ȷ���Ƿ��������ܻ�������
������ʽ��ԭ������ʦ�˽���ǵ�ҵ�����Ƽ�ʹ��ǿ�������ķ�������Ϊ��ʵ����SLA�ϸߣ������������ɿ��Ҵ���ʱ���ڱ���������������Բ�ȡ�˶̡�ƽ�����ǿ��������ʽ�����ַ�ʽ�ı����������Ĺ����У�ҵ�������ڶ�дij�� regionʱ TiKV�ڵ���� unreachable�Ĵ�������ͼ��
����ʱ�䣺����������ҵ��������ǰȫ����ȡdb�е���Ҫҵ����Ϣ��ҵ����������ݶ�������ͬʱ����ҹ������ҵ����ѭ Ǩ��/�л�/�ƺ�/���� ��ԭ�����������ţ�����������ʱ��д�߷����������ѹ�����ų������
���˷�����أ�
���ݣ�����ʹ�� br ���ݵ��Խ� S3 �洢�С�br �� S3 �Ľ�����Ϊ�����Σ� һ���ȱ�������region�洢�� s3�������������� store �� S3 �е� sst �ļ����� checksum������� checksum ���� IO �����糬ʱ������br����ͻᱨʧ�ܡ����� S3 ����ռʽ�ģ��������⻧ʹ��ʱ��������������⡣���չٷ����������� minio ������� S3 �������ݿ�ı�����ָ���һ��ԭ��Ĭ�ϵIJ���s3����minio������ minio ����������˵�Ƕ����ķ���û����Դǿռȫ��������ȫ�����ݵ��ȶ��ԡ�
PS��������� br ���ݵ��Խ� S3 ʧ��ʱ��������Ҫ���һ�� TiDB ��״̬�����������ô������� s3 ���ȶ���ɵģ����ܽ�ı����������£�
ERROR 1: [error="msg:"Io(Os { code: 2, kind: NotFound, message: \"No such file or directory\" })" : [BR:KV:ErrKVUnknown]unknown tikv error"] ERROR 2: [error="msg:"Io(Os { code: 5, kind: Other, message: \"Input/output error\" })" : [BR:KV:ErrKVUnknown]unknown tikv error"] ERROR 3: [error="msg:"Io(Os { code: 11, kind: WouldBlock, message: \"Resource temporarily unavailable\" })" "] ERROR 4: [error="rpc error: code = Unknown desc = Io(Os { code: 107, kind: NotConnected, message: "Transport endpoint is not connected" })"] ERROR 5: [error="NoCredentialProviders: no valid providers in chain. Deprecated.\n\tFor verbose messaging see aws.Config.CredentialsChainVerboseErrors"] ERROR 6: [error="msg:"Io(Custom { kind: Other, error: \"failed to put object Error during dispatch: connection error: Connection reset by peer (os error 104)\" })" "] ERROR 7: [error="error happen in store xxx at xxx:xxx: Io(Custom { kind: Other, error: "failed to put object rusoto error Request ID: None Body: \nERROR 1: InvalidPartOne or more of the specified parts could not be found. The part may not have been uploaded, or the specified entity tag may not match the parts entity tag.....�ָ������ν��лָ�ʱ���ع���Ⱥ���Dz����� 16 �� kv �ڵ㣬�ָ�ʱ������ 86 ��Сʱ������Ȼ�Dz��ܽ��ܵġ�������ѯ��ԭ������ʦ���������� TiKV ���������������dz���ͬ�������Ⱥ��TiKV�����٣�����������Ⱥ��TiKV �����ࣩ����ͬ��������������Ⱥ���������ָ̻�ʱ����Ҫ��ô����������ͬ������TiKV�ڵ��������˹��ࡢ���������൱��Ⱥ���ָ�Ч����ߡ����գ����ָ�ʱ�� 10TB+���� 4h50m��ƽ���ָ�ʱ��Ϊ7Сʱ���ҡ�
PS��v4.0.1 �� br ���ݹ��߱� v4.0.16 ��Ҫ 40% ���ң��Ҹо������� v4.0.16��У�鲿�����˸���Ĺ�����v4.0.1 �� br �ָ��� v4.0.16 ������Ҳ��һ���������Ƕ� ������ ddl ���ܣ�v4.0.1 �ܳɹ� v4.0.16 ���� [error="[ddl:-1]json: cannot unmarshal array into Go value of type string"]
SQL�����ԣ�ʹ�������ἰ����������������������
���ܻ������⣺ʹ�������ἰ����������������������
PS�����ʹ�������������������������ܻ������⣬���Գ����ƶ�ҵ���������ύ��ʽ�����ֹ۸�Ϊ����
begin pessimistic; xxx�� commit���������̣�
������������ĸ����ǣ�5�汾��4�汾���ȶ���������ȥ���ⶶ����������������
Query summary ����ͬʱ�� TiDB �ڲ��Զ�ִ�е� SQL ��� 999 ��λ ��֮ǰ��4s �ȶ���125ms���������� 97% ������������ܶ�������
CPU���������������Raft Store CPU�������ڱ�����ֵ��������
д������������ ��� v4.0.1 TiKV �� gRPC ģ��������Ż����Ż��� Raft ��־�����ٶȣ������� Commit Log Duration �� Store Duration��
Avg Duration
v4.0.1(��s)
v5.4.1(��s)
Append Log Duration45197Commit Log Duration839522Apply Log Duration150129ҵ������
����һ�� 5�汾�����������棬���ǴӶ�д�����������
д���첽�ύ���� (Async Commit) �� 1pc �ύ���첽������Ҫ������ǽ��������ύ���ӳ٣�1pc�ύָ����ֻ�漰һ�� Region ������������������ύ�ӳٲ��������£�
����Ĭ�Ͽ��� Coprocessor cache ���� ���Ͷ�ȡ���ݵ���ʱ��
�������ܶ��������� GC in Compaction filter ���ܣ�����������������compation Ϊsst��ͬʱ��GC�����ٵ�����GC worker��GCʱ�Ķ�MVCC�汾ʱ��ѹ����
�������ݿ��Ƿdz����ĵ���Ŀ����Ϊ��������״̬�IJ����� DBA ���Ե����������ж��Ƿ�����������������Ҫ��ҵ��������ϡ�����DBA��˵ tiup cluster upgrade һ�����������ȥ�ˣ�����������ҵ���Ƿ��Ͽ������������������Ҫ˼���ĵط���ͬʱ������ǰ�á���顢���ˡ���ͨ����һ��Ҫ����λ���������������¼�����һ�仰����Ҫ��������Ŀ���ڱ�����
���ʮ�ָ�лԭ������ʦ�յ��Ͷ�õ����л����Ϊ�����ĿЭ������Դ�������ƻ�����ˣ���ԭ����רҵָ��������������ķ��գ�ͬʱ�����˼�Ⱥ�����ijɹ��ʣ��������Ч���õ��˹�� TiDB ʹ�÷����ձ��Ͽɡ�
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。