很早之前写过MHA的文章,但是常常在技术群看到有同学问MHA搭建的问题,不是权限问题就是配置问题,我在这里就再次一写下配置过程以及快速的搭建。如果想知道更多的细节与原理,请参考:MySQL高可用架构之MHA

环境:

1主1从,manager放在从库。

主库:192.168.0.10

从库:192.168.0.20

两台机器的mysql安装完成初始化以后进行复制搭建,首先登录主库(192.168.0.10),查看pos点:

mysql>show master status;+------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql-bin.000001 | 154 | | | |

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

1 row in set (0.00 sec)

然后在主库(192.168.0.10)

添加复制账号以及mha用的账号

mysql> grant replication slave on *.* to 'repl'@'192.168.0.10' identified by 'repl';

Query OK,0 rows affected, 1 warning (0.00sec)

mysql> grant replication slave on *.* to 'repl'@'192.168.0.20' identified by 'repl';

Query OK,0 rows affected, 1 warning (0.00sec)

mysql> grant all on *.* to 'root'@'192.168.0.20' identified by '123';

Query OK,0 rows affected, 1 warning (0.00sec)

mysql> grant all on *.* to 'root'@'192.168.0.10' identified by '123';

Query OK,0 rows affected, 1 warning (0.01sec)

mysql>

从库(192.168.0.10 )change到mysql-bin.000001,pos点154

CHANGE MASTER TO MASTER_HOST='192.168.0.10',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;

mysql>start slave;

Query OK,0 rows affected (0.15sec)

mysql>show slave status\G*************************** 1. row ***************************Slave_IO_State: Waitingfor master tosend event

Master_Host:192.168.0.10Master_User: repl

Master_Port:3306Connect_Retry:60Master_Log_File: mysql-bin.000001Read_Master_Log_Pos:1344Relay_Log_File: relaylog.000002Relay_Log_Pos:1510Relay_Master_Log_File: mysql-bin.000001Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

复制到这来就搭建完成了,然后配置192.168.0.10和192.168.0.20 ssh互信。(两台机器都执行)

ssh-keygen -t rsassh-copy-id -i /root/.ssh/id_rsa.pub '-p 22 192.168.0.10'

ssh-copy-id -i /root/.ssh/id_rsa.pub '-p 22 192.168.0.20'

安装MHA软件,首先安装epel源。(2台机器)

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

安装依赖包

yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes -y

安装MHA软件(两台机器)

tar xf mha4mysql-node-0.56.tar.gz

cd mha4mysql-node-0.56

perlMakefile.PLmake && make install

tar xf mha4mysql-manager-0.56.tar.gz

cd mha4mysql-manager-0.56

perlMakefile.PLmake && make install

在从库(192.168.0.20)创建目录:

mkdir /data/mha/3306/log

cd/data/mha/3306/touch mha.cnf

mha.cnf配置文件内容如下:

[server default]

client_bindir=/usr/local/mysql/bin/manager_log=/data/mha/3306/log/manager.log

manager_workdir=/data/mha/3306/log

master_binlog_dir=/data/mysql/3306/binlog/master_ip_failover_script=/usr/local/bin/master_ip_failover

master_ip_online_change_script= /usr/local/bin/master_ip_online_change

report_script=/usr/local/bin/send_report

init_conf_load_script=/usr/local/bin/load_cnf

remote_workdir=/data/mysql/3306/mysqltmp

#secondary_check_script= /usr/local/bin/masterha_secondary_check -s 192.168.0.30 -s 192.168.0.40user=root

ping_interval=3repl_user=repl

ssh_port=22ssh_user=root

max_ping_errors=40[server1]hostname=192.168.0.10port=3306[server2]

candidate_master=1check_repl_delay=0

hostname=192.168.0.20port=3306

编辑文件 /usr/local/bin/load_cnf 里面的密码修改成对应的密码

#!/usr/bin/perlprint"password=123\n";

print"repl_password=repl\n";

执行chek命令查看复制是否正常:

[root@dbserver-yayun-02 3306]# masterha_check_repl --conf=/data/mha/3306/mha.cnf

Mon Mar13 21:36:54 2017 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.

Mon Mar13 21:36:54 2017 - [info] Reading application default configuration from /data/mha/3306/mha.cnf..

Mon Mar13 21:36:54 2017 - [info] Updating application default configuration from /usr/local/bin/load_cnf..

Mon Mar13 21:36:54 2017 - [info] Reading server configuration from /data/mha/3306/mha.cnf..

Mon Mar13 21:36:54 2017 - [info] Setting max_ping_errors to 40, ping_interval to 3.

Mon Mar13 21:36:54 2017 - [info] MHA::MasterMonitor version 0.56.

Mon Mar13 21:36:54 2017 - [info] GTID failover mode = 0Mon Mar13 21:36:54 2017 - [info] Dead Servers:

Mon Mar13 21:36:54 2017 - [info] Alive Servers:

Mon Mar13 21:36:54 2017 - [info] 192.168.0.10(192.168.0.10:3306)

Mon Mar13 21:36:54 2017 - [info] 192.168.0.20(192.168.0.20:3306)

Mon Mar13 21:36:54 2017 - [info] Alive Slaves:

Mon Mar13 21:36:54 2017 - [info] 192.168.0.20(192.168.0.20:3306) Version=5.7.17-log (oldest major version between slaves) log-bin:enabled

Mon Mar13 21:36:54 2017 - [info] Replicating from 192.168.0.10(192.168.0.10:3306)

Mon Mar13 21:36:54 2017 - [info] Primary candidate forthe new Master (candidate_master is set)

Mon Mar13 21:36:54 2017 - [info] Current Alive Master: 192.168.0.10(192.168.0.10:3306)

Mon Mar13 21:36:54 2017 - [info] Checking slave configurations..

Mon Mar13 21:36:54 2017 - [info] read_only=1 is not set on slave 192.168.0.20(192.168.0.20:3306).

Mon Mar13 21:36:54 2017 - [warning] relay_log_purge=0 is not set on slave 192.168.0.20(192.168.0.20:3306).

Mon Mar13 21:36:54 2017 - [info] Checking replication filtering settings..

Mon Mar13 21:36:54 2017 - [info] binlog_do_db= , binlog_ignore_db=Mon Mar13 21:36:54 2017 - [info] Replication filtering check ok.

Mon Mar13 21:36:54 2017 - [info] GTID (with auto-pos) is not supported

Mon Mar13 21:36:54 2017 - [info] Starting SSH connection tests..

Mon Mar13 21:36:55 2017 - [info] All SSH connection tests passed successfully.

Mon Mar13 21:36:55 2017 - [info] Checking MHA Node version..

Mon Mar13 21:36:55 2017 - [info] Version check ok.

Mon Mar13 21:36:55 2017 - [info] Checking SSH publickey authentication settings on the current master..

Mon Mar13 21:36:55 2017 - [info] HealthCheck: SSH to 192.168.0.10is reachable.

Mon Mar13 21:36:56 2017 - [info] Master MHA Node version is 0.56.

Mon Mar13 21:36:56 2017 - [info] Checking recovery script configurations on 192.168.0.10(192.168.0.10:3306)..

Mon Mar13 21:36:56 2017 - [info] Executing command: save_binary_logs --command=test --start_pos=4 --binlog_dir=/data/mysql/3306/binlog/ --output_file=/data/mysql/3306/mysqltmp/save_binary_logs_test --manager_version=0.56 --start_file=mysql-bin.000001Mon Mar13 21:36:56 2017 - [info] Connecting to root@192.168.0.10(192.168.0.10:22)..

Creating/data/mysql/3306/mysqltmp ifnot exists.. ok.

Checking output directory is accessible or not..

ok.

Binlog found at/data/mysql/3306/binlog/, up to mysql-bin.000001Mon Mar13 21:36:56 2017 - [info] Binlog setting check done.

Mon Mar13 21:36:56 2017 - [info] Checking SSH publickey authentication and checking recovery script configurations on all alive slave servers..

Mon Mar13 21:36:56 2017 - [info] Executing command : apply_diff_relay_logs --command=test --slave_user='root' --slave_host=192.168.0.20 --slave_ip=192.168.0.20 --slave_port=3306 --workdir=/data/mysql/3306/mysqltmp --target_version=5.7.17-log --manager_version=0.56 --client_bindir=/usr/local/mysql/bin/ --relay_dir=/data/mysql/3306/relaylog --current_relay_log=relaylog.000002 --slave_pass=xxx

Mon Mar13 21:36:56 2017 - [info] Connecting to root@192.168.0.20(192.168.0.20:22)..

Checking slave recovery environment settings..

Relay log found at/data/mysql/3306/relaylog, up to relaylog.000002Temporary relay logfile is /data/mysql/3306/relaylog/relaylog.000002Testing mysql connection and privileges..mysql: [Warning] Using a password on the command line interface can be insecure.done.

Testing mysqlbinlog output..done.

Cleaning up testfile(s).. done.

Mon Mar13 21:36:56 2017 - [info] Slaves settings check done.

Mon Mar13 21:36:56 2017 - [info]192.168.0.10(192.168.0.10:3306) (current master)+--192.168.0.20(192.168.0.20:3306)

Mon Mar13 21:36:56 2017 - [info] Checking replication health on 192.168.0.20..

Mon Mar13 21:36:56 2017 - [info] ok.

Mon Mar13 21:36:56 2017 - [info] Checking master_ip_failover_script status:

Mon Mar13 21:36:56 2017 - [info] /usr/local/bin/master_ip_failover --command=status --ssh_user=root --orig_master_host=192.168.0.10 --orig_master_ip=192.168.0.10 --orig_master_port=3306IN SCRIPT TEST====/sbin/ifconfig eth1:1 down==/sbin/ifconfig eth1:1 192.168.0.88/16===Checking the Status of the script.. OK

Mon Mar13 21:36:56 2017 - [info] OK.

Mon Mar13 21:36:56 2017 -[warning] shutdown_script is not defined.

Mon Mar13 21:36:56 2017 - [info] Got exit code 0(Not master dead).

MySQL Replication Health is OK.

View Code

主库(192.168.0.10)执行命令,启动vip:

/sbin/ifconfig eth1:1 192.168.0.88/16

在线切换,把主库切到192.168.0.20

masterha_master_switch --master_state=alive --conf=/data/mha/3306/mha.cnf --new_master_host=192.168.0.20 --new_master_port=3306 --orig_master_is_new_slave

输出如下:

Mon Mar 13 22:15:08 2017 - [info] MHA::MasterRotate version 0.56.

Mon Mar13 22:15:08 2017 - [info] Starting online master switch..

Mon Mar13 22:15:08 2017 - [info]

Mon Mar13 22:15:08 2017 - [info] * Phase 1: Configuration Check Phase..

Mon Mar13 22:15:08 2017 - [info]

Mon Mar13 22:15:08 2017 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.

Mon Mar13 22:15:08 2017 - [info] Reading application default configuration from /data/mha/3306/mha.cnf..

Mon Mar13 22:15:08 2017 - [info] Updating application default configuration from /usr/local/bin/load_cnf..

Mon Mar13 22:15:08 2017 - [info] Reading server configuration from /data/mha/3306/mha.cnf..

Mon Mar13 22:15:08 2017 - [info] Setting max_ping_errors to 40, ping_interval to 3.

Mon Mar13 22:15:08 2017 - [info] GTID failover mode = 0Mon Mar13 22:15:08 2017 - [info] Current Alive Master: 192.168.0.10(192.168.0.10:3306)

Mon Mar13 22:15:08 2017 - [info] Alive Slaves:

Mon Mar13 22:15:08 2017 - [info] 192.168.0.20(192.168.0.20:3306) Version=5.7.17-log (oldest major version between slaves) log-bin:enabled

Mon Mar13 22:15:08 2017 - [info] Replicating from 192.168.0.10(192.168.0.10:3306)

Mon Mar13 22:15:08 2017 - [info] Primary candidate forthe new Master (candidate_master is set)

It is better to execute FLUSH NO_WRITE_TO_BINLOG TABLES on the master before switching. Is it ok to execute on192.168.0.10(192.168.0.10:3306)? (YES/no): yes

Mon Mar13 22:15:09 2017 - [info] Executing FLUSH NO_WRITE_TO_BINLOG TABLES. This may take long time..

Mon Mar13 22:15:09 2017 - [info] ok.

Mon Mar13 22:15:09 2017 - [info] Checking MHA is not monitoring or doing failover..

Mon Mar13 22:15:09 2017 - [info] Checking replication health on 192.168.0.20..

Mon Mar13 22:15:09 2017 - [info] ok.

Mon Mar13 22:15:09 2017 - [info] 192.168.0.20can be new master.

Mon Mar13 22:15:09 2017 - [info]

From:192.168.0.10(192.168.0.10:3306) (current master)+--192.168.0.20(192.168.0.20:3306)

To:192.168.0.20(192.168.0.20:3306) (new master)+--192.168.0.10(192.168.0.10:3306)

Starting master switch from192.168.0.10(192.168.0.10:3306) to 192.168.0.20(192.168.0.20:3306)? (yes/NO): yes

Mon Mar13 22:15:10 2017 - [info] Checking whether 192.168.0.20(192.168.0.20:3306) is ok forthe new master..

Mon Mar13 22:15:10 2017 - [info] ok.

Mon Mar13 22:15:10 2017 - [info] 192.168.0.10(192.168.0.10:3306): SHOW SLAVE STATUS returned empty result. To check replication filtering rules, temporarily executing CHANGE MASTER to a dummy host.

Mon Mar13 22:15:11 2017 - [info] 192.168.0.10(192.168.0.10:3306): Resetting slave pointing to the dummy host.

Mon Mar13 22:15:11 2017 - [info] ** Phase 1: Configuration Check Phase completed.

Mon Mar13 22:15:11 2017 - [info]

Mon Mar13 22:15:11 2017 - [info] * Phase 2: Rejecting updates Phase..

Mon Mar13 22:15:11 2017 - [info]

Mon Mar13 22:15:11 2017 - [info] Executing master ip online change script to disable writeon the current master:

Mon Mar13 22:15:11 2017 - [info] /usr/local/bin/master_ip_online_change --command=stop --orig_master_host=192.168.0.10 --orig_master_ip=192.168.0.10 --orig_master_port=3306 --orig_master_user='root' --orig_master_password='123' --new_master_host=192.168.0.20 --new_master_ip=192.168.0.20 --new_master_port=3306 --new_master_user='root' --new_master_password='123' --orig_master_ssh_user=root --new_master_ssh_user=root --orig_master_is_new_slave

Mon Mar13 22:15:11 2017 173907Set read_only on the new master.. ok.

Mon Mar13 22:15:11 2017 177320Drpping app user on the orig master..

Mon Mar13 22:15:11 2017 177844 Set read_only=1on the orig master.. ok.

Mon Mar13 22:15:11 2017 179299Killing all application threads..

Mon Mar13 22:15:11 2017 179318 done.

Mon Mar13 22:15:11 2017 - [info] ok.

Mon Mar13 22:15:11 2017 - [info] Locking all tables on the orig master to reject updates from everybody (including root):

Mon Mar13 22:15:11 2017 - [info] Executing FLUSH TABLES WITH READ LOCK..

Mon Mar13 22:15:11 2017 - [info] ok.

Mon Mar13 22:15:11 2017 - [info] Orig master binlog:pos is mysql-bin.000001:2265.

Mon Mar13 22:15:11 2017 - [info] Waiting to execute all relay logs on 192.168.0.20(192.168.0.20:3306)..

Mon Mar13 22:15:11 2017 - [info] master_pos_wait(mysql-bin.000001:2265) completed on 192.168.0.20(192.168.0.20:3306). Executed 0events.

Mon Mar13 22:15:11 2017 - [info] done.

Mon Mar13 22:15:11 2017 - [info] Getting new master's binlog name and position..

Mon Mar 13 22:15:11 2017 - [info] mysql-bin.000001:2265Mon Mar13 22:15:11 2017 - [info] All other slaves should start replication from here. Statement should be: CHANGE MASTER TO MASTER_HOST='192.168.0.20', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=2265, MASTER_USER='repl', MASTER_PASSWORD='xxx';

Mon Mar13 22:15:11 2017 - [info] Executing master ip online change script to allow writeon the new master:

Mon Mar13 22:15:11 2017 - [info] /usr/local/bin/master_ip_online_change --command=start --orig_master_host=192.168.0.10 --orig_master_ip=192.168.0.10 --orig_master_port=3306 --orig_master_user='root' --orig_master_password='123' --new_master_host=192.168.0.20 --new_master_ip=192.168.0.20 --new_master_port=3306 --new_master_user='root' --new_master_password='123' --orig_master_ssh_user=root --new_master_ssh_user=root --orig_master_is_new_slave

Mon Mar13 22:15:11 2017 493612 Set read_only=0on the new master.

Mon Mar13 22:15:11 2017 493874Creating app user on the new master..

Mon Mar13 22:15:32 2017 - [info] ok.

Mon Mar13 22:15:32 2017 - [info]

Mon Mar13 22:15:32 2017 - [info] * Switching slaves inparallel..

Mon Mar13 22:15:32 2017 - [info]

Mon Mar13 22:15:32 2017 - [info] Unlocking all tables on the orig master:

Mon Mar13 22:15:32 2017 - [info] Executing UNLOCK TABLES..

Mon Mar13 22:15:32 2017 - [info] ok.

Mon Mar13 22:15:32 2017 - [info] Starting orig master as a new slave..

Mon Mar13 22:15:32 2017 - [info] Resetting slave 192.168.0.10(192.168.0.10:3306) and starting replication from the new master 192.168.0.20(192.168.0.20:3306)..

Mon Mar13 22:15:32 2017 - [info] Executed CHANGE MASTER.

Mon Mar13 22:15:32 2017 - [info] Slave started.

Mon Mar13 22:15:32 2017 - [info] All new slave servers switched successfully.

Mon Mar13 22:15:32 2017 - [info]

Mon Mar13 22:15:32 2017 - [info] * Phase 5: New master cleanup phase..

Mon Mar13 22:15:32 2017 - [info]

Mon Mar13 22:15:32 2017 - [info] 192.168.0.20: Resetting slave infosucceeded.

Mon Mar13 22:15:32 2017 - [info] Switching master to 192.168.0.20(192.168.0.20:3306) completed successfully.

View Code

关于配置文件中的参数:

max_ping_errors=40,这个是修改了源码,增加了检测次数的定义,默认是3次,太容易误切换。

启动管理进程:

/usr/bin/nohup /usr/local/bin/masterha_manager --conf=/data/mha/3306/mha.cnf --ignore_last_failover > /data/mha/3306/log/manager.log 2>&1 &

在主库(192.168.0.10)封掉ip,可以看到日志输出。

iptables -I INPUT -s 192.168.0.20 -j DROP

Mon Mar 13 22:22:50 2017 - [warning] Got error on MySQL connect: 2003 (Can't connect to MySQL server on'192.168.0.10'(4))

Mon Mar 13 22:22:50 2017 - [warning] Connection failed 3 time(s)..

Mon Mar13 22:22:53 2017 - [warning] Got error on MySQL connect: 2003 (Can't connect to MySQL server on'192.168.0.10'(4))

Mon Mar 13 22:22:53 2017 - [warning] Connection failed 4 time(s)..

Mon Mar13 22:22:56 2017 - [warning] Got error on MySQL connect: 2003 (Can't connect to MySQL server on'192.168.0.10'(4))

Mon Mar 13 22:22:56 2017 - [warning] Connection failed 5 time(s)..

Mon Mar13 22:22:59 2017 - [warning] Got error on MySQL connect: 2003 (Can't connect to MySQL server on'192.168.0.10'(4))

Mon Mar 13 22:22:59 2017 - [warning] Connection failed 6 time(s)..

Mon Mar13 22:23:02 2017 - [warning] Got error on MySQL connect: 2003 (Can't connect to MySQL server on'192.168.0.10'(4))

Mon Mar 13 22:23:02 2017 - [warning] Connection failed 7 time(s)..

Mon Mar13 22:23:05 2017 - [warning] Got error on MySQL connect: 2003 (Can't connect to MySQL server on'192.168.0.10'(4))

Mon Mar 13 22:23:05 2017 - [warning] Connection failed 8 time(s)..

Mon Mar13 22:23:08 2017 - [warning] Got error on MySQL connect: 2003 (Can't connect to MySQL server on'192.168.0.10'(4))

Mon Mar 13 22:23:08 2017 - [warning] Connection failed 9 time(s)..

Mon Mar13 22:23:11 2017 - [warning] Got error on MySQL connect: 2003 (Can't connect to MySQL server on'192.168.0.10'(4))

Mon Mar 13 22:23:11 2017 - [warning] Connection failed 10 time(s)..

Mon Mar13 22:23:14 2017 - [warning] Got error on MySQL connect: 2003 (Can't connect to MySQL server on'192.168.0.10'(4))

Mon Mar 13 22:23:14 2017 - [warning] Connection failed 11 time(s)..

Mon Mar13 22:23:17 2017 - [warning] Got error on MySQL connect: 2003 (Can't connect to MySQL server on'192.168.0.10'(4))

View Code

mysql 搭建mha_MHA快速搭建相关推荐

  1. 搭建项目-快速搭建电商平台后台管理系统及逆向生成微服务基本功能

    1 快速搭建电商平台后台管理系统 目前在Gitee开源软件中,人人开源和若依关注度比较高,优品电商平台后台系统采用人人开源的框架来快速构建,完成基本的CRUD,开发更加关注复杂业务.高并发.高可用以及 ...

  2. php mysql快速搭建_快速搭建php环境

    WAMP:在windows系统下搭建PHP开发环境 APPSERVER: 两种可用于开发环境的,一般用WAMP LAMP构架 Linux系统 Apache服务器管理软件 Mysql数据库 php语言 ...

  3. jfinal java搭建_Eclipse快速搭建Jfinal web应用 (一)

    JFinal简介JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所有优势 ...

  4. 微盟电子商城网络交易系统——Day01【项目介绍、项目环境搭建、快速搭建后台管理系统】

    ❤ 作者主页:欢迎来到我的技术博客

  5. 使用Innobackupex快速搭建(修复)MySQL主从架构

    2019独角兽企业重金招聘Python工程师标准>>> 使用Innobackupex快速搭建(修复)MySQL主从架构 MySQL的主从搭建大家有很多种方式,传统的mysqldump ...

  6. lamp php5.5,CentOS 5.5快速搭建Apache+PHP5+MySQL完美Web服务器(LAMP)

    CentOS 5.5快速搭建Apache+PHP5+MySQL完美Web服务器(LAMP) By sole | Friday, May 13, 2011 在网上看了很多,修改多次,也试验多次,均没有问 ...

  7. docker mysql 操作_[Docker] Docker 快速搭建本地MySQL开发环境

    [Docker] Docker 快速搭建本地MySQL开发环境 关于 Docker 的安装使用本文不再赘述,有兴趣的可以通过官网或是浏览我的专栏文章了解.今天着重给大家介绍下如何利用Docker快速搭 ...

  8. MySQL Shell副本集和MGR快速搭建详解

    墨墨导读:本文是 MySQL Shell 快速搭建 副本集 和 MGR集群的全过程,分享至此,希望对大家有帮助. 简介 MySQL Shell是MySQL Server的高级客户端和代码编辑器.除了和 ...

  9. 苹果cms mysql 什么版本_分享如何使用阿里云ECS快速搭建CMS网站

    想建网站又不会编程的小伙伴有福啦,本期推荐一些开源的cms建站程序,不需要写后端的任何逻辑代码,轻轻松松就可以建立自己的网站了,当然,要想网站有自己的个性,模版还是需要自己写的,只需要会简单的html ...

最新文章

  1. 微信 服务器地址的有效性,C# 微 信 公众平台 验证服务器地址的有效性
  2. C#项目打包,并自动安装SQL数据库(转)
  3. GetLBText()和GetWindowText()区别
  4. 概率论-4.2 中心极限定理
  5. UTF-8和BOM的一些说明
  6. 1668智能下数教程视频_你需要的教程合集更新
  7. python logging日志分割_python logging日志模块以及多进程日志
  8. 程序员面试金典——9.8硬币表示
  9. android Tbs腾讯X5内核初始化失败
  10. vbs教程《变量使用》
  11. ubuntu18.04配置静态ip和动态ip
  12. 工业相机和镜头参数简析
  13. 【ITool】js多个页面传值
  14. [Leetcode] 625. Minimum Factorization 解题报告
  15. python对sqlite增删改查_Python操作sqlite3数据库 增删改查
  16. mysql 索引代码_mysql索引
  17. AI绘图参数设置和一些注意点
  18. Python编程100例--身份证号码的校验码
  19. 阅读查询计划:楼梯SQL Server索引级别9
  20. layDate显示默认时间

热门文章

  1. python -- 内存管理
  2. Flutter “孔雀开屏”的动画效果
  3. Python爬虫案例:结合Matplotlib分析天气数据
  4. Linux虚拟机安装JDK
  5. 漫画别只是看,用“应用之星”自制App才过瘾
  6. ZT: 一位老工程师的终告
  7. 使用TortoiseGit pull时,提示Please, commit your changes or stash them before you can merge.
  8. Socially-Aware Self-Supervised Tri-Training for Recommendation
  9. 华东之旅--上海第一天
  10. 第14个天猫双11,技术创新带来消费新体验