GTID复制模式切换到传统主从复制
主从复制环境:
主库:10.18.10.11
从库:10.18.10.12
MySQL5.7.22

切换之前查看下主从gitd_mode参数值
主服务器:gtid_mode值
root@sakila 11:45: [(none)]> show variables like '%gtid_mode%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode | ON |
+---------------+-------+
1 row in set (0.01 sec)

从服务器gitd_mode值:
root@sakila 11:44: [(none)]> show variables like '%gtid_mode%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode | ON |
+---------------+-------+
1 row in set (0.01 sec)

root@sakila 11:47:  [(none)]> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.18.10.11
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: on.000012
Read_Master_Log_Pos: 346
Relay_Log_File: slave-relay-bin.000024
Relay_Log_Pos: 505
Relay_Master_Log_File: on.000012
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: 346
Relay_Log_Space: 753
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 3306100
Master_UUID: b8439fb9-4f22-11e8-a24e-000c291a6b52
Master_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set: b8439fb9-4f22-11e8-a24e-000c291a6b52:103
Executed_Gtid_Set: b8439fb9-4f22-11e8-a24e-000c291a6b52:1-103
Auto_Position: 0
Replicate_Rewrite_db:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)

先在从库上关闭slave,停止主从复制,然后修改复制模式为传统模式,master_auto_position=0

root@sakila 11:48: [(none)]> stop slave;
Query OK, 0 rows affected (0.00 sec)
root@sakila 11:50: [(none)]> CHANGE MASTER TO master_auto_position=0,
Master_Host='10.18.10.11',
MASTER_USER='repluser',
MASTER_PASSWORD='rep123',
Master_Log_File='on.000012',
MASTER_LOG_POS=346;
Query OK, 0 rows affected, 2 warnings (0.03 sec)
root@sakila 11:52: [(none)]> start slave;
Query OK, 0 rows affected (0.01 sec)
root@sakila 11:53: [(none)]> set global gtid_mode=on_permissive;
Query OK, 0 rows affected (0.01 sec)
root@sakila 11:53: [(none)]> set global gtid_mode=off_permissive;
Query OK, 0 rows affected (0.01 sec)
root@sakila 11:54: [(none)]> set global gtid_mode=off;
Query OK, 0 rows affected (0.01 sec)
root@sakila 11:55: [(none)]> set global enforce_gtid_consistency=off;
Query OK, 0 rows affected (0.00 sec)
root@sakila 11:55: [(none)]> show variables like '%gtid_mode%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode | OFF |
+---------------+-------+
1 row in set (0.00 sec)

同样主库做如下操作:
root@sakila 11:45: [(none)]> show variables like '%gtid_mode%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode | ON |
+---------------+-------+
1 row in set (0.01 sec)
root@sakila 11:46: [(none)]> set global gtid_mode=on_permissive;
Query OK, 0 rows affected (0.02 sec)
root@sakila 11:53: [(none)]> set global gtid_mode=off_permissive;
Query OK, 0 rows affected (0.01 sec)
root@sakila 11:54: [(none)]> set global gtid_mode=off;
Query OK, 0 rows affected (0.02 sec)
root@sakila 11:55: [(none)]> set global enforce_gtid_consistency=off;
Query OK, 0 rows affected (0.00 sec)
root@sakila 11:55: [(none)]> show variables like '%gtid_mode%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode | OFF |
+---------------+-------+
1 row in set (0.00 sec)

两边gtid复制模式方式现已关闭,同时开始传统模式,开始验证传统复制模式是否生效:

验证前查记录下当前Excuted_Gtid_Set值,方便后面做对比。
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set: b8439fb9-4f22-11e8-a24e-000c291a6b52:1-103
Auto_Position: 0
Replicate_Rewrite_db: 在主库插入数据:
root@sakila 12:11: [test]> select * from tt;
+----+-------+-------+
| id | name | score |
+----+-------+-------+
| 1 | Tome | 80 |
| 2 | Janne | 90 |
| 3 | Kases | 84 |
| 4 | kids | 99 |
+----+-------+-------+
4 rows in set (0.00 sec)
root@sakila 12:12: [test]> insert into tt (name,score) values('MySQL',82);
Query OK, 1 row affected (0.01 sec)
root@sakila 12:13: [test]> select * from tt;
+----+-------+-------+
| id | name | score |
+----+-------+-------+
| 1 | Tome | 80 |
| 2 | Janne | 90 |
| 3 | Kases | 84 |
| 4 | kids | 99 |
| 5 | MySQL | 82 |
+----+-------+-------+
5 rows in set (0.00 sec) 从库查看插入数据:
root@sakila 12:06: [(none)]> use test
Database changed
root@sakila 12:14: [test]> select * from tt;
+----+-------+-------+
| id | name | score |
+----+-------+-------+
| 1 | Tome | 80 |
| 2 | Janne | 90 |
| 3 | Kases | 84 |
| 4 | kids | 99 |
| 5 | MySQL | 82 |
+----+-------+-------+
5 rows in set (0.00 sec) 发现数据已经过来了 ,再查看Excuted_Gtid_Set的值 root@sakila 12:14: [test]> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.18.10.11
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: on.000015
Read_Master_Log_Pos: 461
Relay_Log_File: slave-relay-bin.000008
Relay_Log_Pos: 620
Relay_Master_Log_File: on.000015
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
--------------------省略--------------
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set: b8439fb9-4f22-11e8-a24e-000c291a6b52:1-103
Auto_Position: 0
Replicate_Rewrite_db:
Channel_Name:
Master_TLS_Version:

通过对比发现GTID的值没有增加,证明切换成功。

通过传统主从模式切换到GTID主从复制模式:

在主从库上修改enforce_gtid_consistency=warn,确保在error.log中不出现警告信息,如果有需要先修复。
主库:
root@sakila 12:13: [test]> set global enforce_gtid_consistency=warn;
Query OK, 0 rows affected (0.00 sec)
root@sakila 12:19: [test]> show variables like '%enforce_gtid_consistency%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| enforce_gtid_consistency | WARN |
+--------------------------+-------+
1 row in set (0.01 sec)
从库:
root@sakila 12:18: [test]> set global enforce_gtid_consistency=warn;
Query OK, 0 rows affected (0.00 sec)
root@sakila 12:19: [test]> show variables like '%enforce_gtid_consistency%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| enforce_gtid_consistency | WARN |
+--------------------------+-------+
1 row in set (0.01 sec)

在主从库上调整enforce_gtid_consistency=on,保证GTID的一致性
主库:
root@sakila 12:20: [test]> set global enforce_gtid_consistency=on;
Query OK, 0 rows affected (0.00 sec)

root@sakila 12:21: [test]> show variables like '%enforce_gtid_consistency%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| enforce_gtid_consistency | ON |
+--------------------------+-------+
1 row in set (0.01 sec)
从库:
root@sakila 12:20: [test]> set global enforce_gtid_consistency=on;
Query OK, 0 rows affected (0.00 sec)

root@sakila 12:22: [test]> show variables like '%enforce_gtid_consistency%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| enforce_gtid_consistency | ON |
+--------------------------+-------+
1 row in set (0.01 sec)

然后在主从库安装前面的顺序再一次修改回去,直至gtid_mode=on为止
主库操作:
root@sakila 12:21: [test]> set global gtid_mode=off_permissive;
Query OK, 0 rows affected (0.02 sec)
root@sakila 12:24: [test]> set global gtid_mode=on_permissive;
Query OK, 0 rows affected (0.01 sec)
root@sakila 12:24: [test]> set global gtid_mode=on;
Query OK, 0 rows affected (0.01 sec)
root@sakila 12:24: [test]> show variables like '%gtid_mode%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode | ON |
+---------------+-------+
1 row in set (0.00 sec)

从库操作:
root@sakila 12:22: [test]> set global gtid_mode=off_permissive;
Query OK, 0 rows affected (0.01 sec)
root@sakila 12:25: [test]> set global gtid_mode=on_permissive;
Query OK, 0 rows affected (0.01 sec)
root@sakila 12:25: [test]> set global gtid_mode=on;
Query OK, 0 rows affected (0.01 sec)
root@sakila 12:25: [test]> show variables like '%gtid_mode%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode | ON |
+---------------+-------+
1 row in set (0.01 sec)

提示:上述gtid_mode参数值修改必须严格安装顺序依次修改,否则会报错。

查看从库的参数Ongoing_anonymous_transaction_count参数值是否为0,如果为0,意味着没有等待的事务,可以直接进行后面的操作
root@sakila 12:29: [test]> show global status like '%ongoing_anonymous%';
+-------------------------------------+-------+
| Variable_name | Value |
+-------------------------------------+-------+
| Ongoing_anonymous_transaction_count | 0 |
+-------------------------------------+-------+
1 row in set (0.01 sec)

说明没有等待提交的事务,可以进入后面的操作。

再次核对GTID相关参数状态:
主服务器:
root@sakila 12:24: [test]> show variables like '%gtid%';
+----------------------------------+-------------------------------------------+
| Variable_name | Value |
+----------------------------------+-------------------------------------------+
| binlog_gtid_simple_recovery | ON |
| enforce_gtid_consistency | ON |
| gtid_executed_compression_period | 1000 |
| gtid_mode | ON |
| gtid_next | AUTOMATIC |
| gtid_owned | |
| gtid_purged | b8439fb9-4f22-11e8-a24e-000c291a6b52:1-92 |
| session_track_gtids | OFF |
+----------------------------------+-------------------------------------------+
8 rows in set (0.06 sec)

从服务器:
root@sakila 12:29: [test]> show variables like '%gtid%';
+----------------------------------+-------------------------------------------+
| Variable_name | Value |
+----------------------------------+-------------------------------------------+
| binlog_gtid_simple_recovery | ON |
| enforce_gtid_consistency | ON |
| gtid_executed_compression_period | 1000 |
| gtid_mode | ON |
| gtid_next | AUTOMATIC |
| gtid_owned | |
| gtid_purged | b8439fb9-4f22-11e8-a24e-000c291a6b52:1-95 |
| session_track_gtids | OFF |
+----------------------------------+-------------------------------------------+
8 rows in set (0.01 sec)

把传统的复制模式改为GTID模式要把传统的复制停掉,然后执行stop slave,然后执行change master to master_auto_position=1

停止slave,查看当前主从状态:
root@sakila 12:35: [test]> stop slave;
Query OK, 0 rows affected (0.01 sec)
root@sakila 12:35: [test]> show slave status\G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 10.18.10.11
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: on.000018
Read_Master_Log_Pos: 194
Relay_Log_File: slave-relay-bin.000014
Relay_Log_Pos: 353
Relay_Master_Log_File: on.000018
Slave_IO_Running: No
Slave_SQL_Running: No
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: 194
Relay_Log_Space: 601
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 3306100
Master_UUID: b8439fb9-4f22-11e8-a24e-000c291a6b52
Master_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State:
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set: b8439fb9-4f22-11e8-a24e-000c291a6b52:1-103
Auto_Position: 0
Replicate_Rewrite_db:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)

show slave status

root@sakila 12:36: [test]> change master to master_auto_position=1;
Query OK, 0 rows affected (0.02 sec)
root@sakila 12:36: [test]> start slave;
Query OK, 0 rows affected (0.00 sec)

root@sakila 12:37:  [test]> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.18.10.11
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: on.000018
Read_Master_Log_Pos: 194
Relay_Log_File: slave-relay-bin.000002
Relay_Log_Pos: 353
Relay_Master_Log_File: on.000018
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: 194
Relay_Log_Space: 561
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 3306100
Master_UUID: b8439fb9-4f22-11e8-a24e-000c291a6b52
Master_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set: b8439fb9-4f22-11e8-a24e-000c291a6b52:1-103
Auto_Position: 1
Replicate_Rewrite_db:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)

show slave status

验证切换是否成功,主库插入数据:
root@sakila 12:30: [test]> insert into tt (name,score) values('gtid',82);
Query OK, 1 row affected (0.00 sec)
root@sakila 12:38: [test]> insert into tt (name,score) values('gtid_on',85);
Query OK, 1 row affected (0.00 sec)
root@sakila 12:38: [test]> select * from tt;
+----+---------+-------+
| id | name | score |
+----+---------+-------+
| 1 | Tome | 80 |
| 2 | Janne | 90 |
| 3 | Kases | 84 |
| 4 | kids | 99 |
| 5 | MySQL | 82 |
| 6 | gtid | 82 |
| 7 | gtid_on | 85 |
+----+---------+-------+
7 rows in set (0.01 sec)

从库查看数据和Excuted_Gtid_Set对应值是否发生变化:
root@sakila 12:37: [test]> select * from tt;
+----+---------+-------+
| id | name | score |
+----+---------+-------+
| 1 | Tome | 80 |
| 2 | Janne | 90 |
| 3 | Kases | 84 |
| 4 | kids | 99 |
| 5 | MySQL | 82 |
| 6 | gtid | 82 |
| 7 | gtid_on | 85 |
+----+---------+-------+
7 rows in set (0.00 sec)

root@sakila 12:40: [test]> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.18.10.11
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: on.000018
Read_Master_Log_Pos: 729
Relay_Log_File: slave-relay-bin.000002
Relay_Log_Pos: 888
Relay_Master_Log_File: on.000018
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_db:
Replicate_Ignore_db:
--------省略部分---------------------
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set: b8439fb9-4f22-11e8-a24e-000c291a6b52:104-105
Executed_Gtid_Set: b8439fb9-4f22-11e8-a24e-000c291a6b52:1-105
Auto_Position: 1
Replicate_Rewrite_db:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)

通过上述查询,发现数据已经复制过来,说明数据同步成功,而Excuted_Gtid_Set的值由“ b8439fb9-4f22-11e8-a24e-000c291a6b52:1-103” 变换为:“b8439fb9-4f22-11e8-a24e-000c291a6b52:1-105”,说明切换成功,因为GTID的值增加了 ,证明开启了GTID的复制方式。

  MySQL的传统复制方式和GTID方式互相切换演示完成,需要注意的是gtid_mode的值虽然支持动态修改,但是在修改时不能跳跃式的修改,必须得严格按照顺序修改。

参考:https://www.cnblogs.com/kindnull/p/9061968.html

GTID复制模式切换与传统主从复制间切换的更多相关文章

  1. MySQL的GTID复制与传统复制的相互切换

    MySQL的GTID复制与传统复制的相互转换 1. GTID复制转换成传统复制 1.1 环境准备 1.2 停止slave 1.3 查看当前主从状态 1.4 change master 1.5 启动主从 ...

  2. Linux学习-基于CentOS7的MySQL5.7的GTID复制

    一.GTID复制简介 GTID (global transaction id)全局事务标识符,MySQL5.6版本开始支持,GTID复制不像传统的复制方式(导步复制.半同步复制)需要找到binlog和 ...

  3. MySQL的GTID复制与传统复制的相互转换

    主库:192.168.225.128:3307从库1:192.168.225.129:3307 Gtid作为5.6版本以来的杀手级特性,却因为不支持拓扑结构内开关而饱受诟病.如果你需要从未开启GTID ...

  4. GTID主从 与 传统主从复制

    一.主从复制 1.)普通主从复制: 普通主从复制主要是基于二进制日志文件位置的复制,因此主必须启动二进制日志记录并建立唯一的服务器ID,复制组中的每个服务器都必须配置唯一的服务器ID.如果您省略ser ...

  5. MHA-手动Failover流程(传统复制&GTID复制)

    本文仅梳理手动Failover流程.MHA的介绍详见:MySQL高可用架构之MHA 一.基本环境 1.1.复制结构 VMware10.0+CentOS6.9+MySQL5.7.21 ROLE HOST ...

  6. GTID主从与传统主从复制

    目录 1.主从复制 2.靠什么同步 3.pos与GTID的什么区别 4.GTID的工作原理 5.GTID参数配置 5.1 在主数据库里创建一个同步账号授权给从数据库使用 5.2 配置主数据库 5.3配 ...

  7. MySQL5.7不停业务将传统复制变更为GTID复制

      由于GTID的优势,我们需要将传统基于file-pos的复制更改为基于GTID的复制,如何在线变更成为我们关心的一个点,如下为具体的方法: 目前我们有一个传统复制下的M-S结构: port 330 ...

  8. 切换-5.7-传统复制切换成GTID复制

    1.基本环境:     Master Slave MySQL版本 MySQL-5.7.16-X86_64 MySQL-5.7.16-X86_64 IP 192.168.56.156 192.168.5 ...

  9. Mysql基于GTID复制模式-运维小结 (完整篇)

    先来看mysql5.6主从同步操作时遇到的一个报错:mysql> change master to master_host='192.168.10.59',master_user='repli' ...

随机推荐

  1. tensorflow学习笔记七----------RNN

    和神经网络不同的是,RNN中的数据批次之间是有相互联系的.输入的数据需要是要求序列化的. 1.将数据处理成序列化: 2.将一号数据传入到隐藏层进行处理,在传入到RNN中进行处理,RNN产生两个结果,一 ...

  2. HDUSTOJ-1559 Vive la Difference!(简单题)

    1559: Vive la Difference! 时间限制: 3 Sec  内存限制: 128 MB提交: 18  解决: 14[提交][状态][讨论版] 题目描述 Take any four po ...

  3. IDEA 增加对JPA的支持 执行JPQL语句

    IDEA 可以在控制台console中执行JPQL语句: 1. 在已存在的项目中选择项目结构: 2. 选择模块-指定实体所在的模块-选择上面的号 2. 选择要添加的模块:我们使用的是JPA,也可能有的 ...

  4. 关于“如何只用2GB内存从20亿,40亿,80亿个整数中找到出现次数最多的数?”的一种思路

    小弟不才,只懂一些c#的皮毛,有一些想法, int32值范围大概在-20亿——20亿,按hashtable一个keyvalue占8B的设定来说,最大可以存储大约2.5亿个 数字-次数对. 那么,可以将 ...

  5. GIT服务器项目部署和自动同步

    1.1.初始化Git仓库首先我们选定一个目录作为Git仓库,假定是/home/data/share/share.git,在/home/data/目录下输入命令: $ cd /home/data/ $ ...

  6. mktemp - 产生唯一的临时文件名

    总览 (SYNOPSIS) mktemp [-q ] [-u ] template 描述 (DESCRIPTION) mktemp 根据 给定的 文件名模板, 改变 其中的 一部分, 从而 生成 临时 ...

  7. CentOS7升级gcc

    CentOS7.5升级gcc到8.3.0版本 1.下载源码包 cd /usr/local/src wget http://ftp.tsukuba.wide.ad.jp/software/gcc/rel ...

  8. Python自动化学习--鼠标和键盘事件

    from selenium import webdriver from selenium.webdriver import ActionChains import time driver = webd ...

  9. 1126. Eulerian Path (25)

    In graph theory, an Eulerian path is a path in a graph which visits every edge exactly once. Similar ...

  10. 使用Vscode添加中文汉化插件

    一.首先打开Vscode,找到该软件的扩展,如下: 二.点击扩展按钮之后,会出现如下的界面,有一个扩展搜索输入框,输入chinese之后,会随之产生一些匹配的插件 三.重启一下Vscode,然后就看到 ...