mysql集群之MYSQL CLUSTER

来源:http://www.cnblogs.com/zhanchenjin/archive/2016/04/11/5378990.html
-Advertisement-
Play Games

1. 參考文檔 http://xuwensong.elastos.org/2014/01/13/ubuntu-%E4%B8%8Bmysql-cluster%E5%AE%89%E8%A3%85%E5%92%8C%E9%85%8D%E7%BD%AE/ 2. 簡介 MySQL-Cluster是一種技術,該 ...


 

1. 參考文檔

http://xuwensong.elastos.org/2014/01/13/ubuntu-%E4%B8%8Bmysql-cluster%E5%AE%89%E8%A3%85%E5%92%8C%E9%85%8D%E7%BD%AE/

2. 簡介

MySQL-Cluster是一種技術,該技術允許在無共用的系統中部署“記憶體中”資料庫的簇。通過無共用體繫結構,系統能夠使用廉價的硬體,而且對軟硬體無特殊要求。此外,由於每個組件都有自己的記憶體和磁碟,所以不存在單點故障。

MySQL簇將標準的MySQL伺服器與名為NDB的“記憶體中”的簇式存儲引擎集成了起來。術語NDB指的是與存儲引擎相關的設置部分,而術語“MySQL簇”指的是MySQL和NDB存儲引擎的組合。

MySQL簇由一組電腦構成,每台電腦上均運行著多種進程,包括MySQL伺服器,NDB簇的數據節點,管理伺服器(MGM),以及(可能)專門的數據訪問程式。關於簇中組件的關係,如下圖:

 

所有這些程式一起構成了MySQL簇。將數據保存到NBD簇引擎中時,表將保存在數據節點內。能夠從簇中所有其他MySQL伺服器直接訪問這些表。因此,假如在將數據保存在簇內的工資應用程式中,如果某一應用程式更新了一位雇員的工資,所有查詢該數據的其他MySQL 伺服器能立刻發現這種變化。

對於MySQL簇,保存在數據節點的數據可被映射,簇能夠處理單獨數據節點的故障,除了少數事物將因事物狀態丟失而被放棄外,不會產生其他影響。由於事物性應用程式能夠處理失敗事宜,因而它不是問題源。

3. MySQL簇的基本概念

NDB 是一種“記憶體中”存儲引擎,它具有可用性高和數據一致性好的特點。

能夠使用多種故障切換和負載平衡選項配置NDB 存儲引擎,但以簇層面上的存儲引擎開始最簡單。MySQL簇的NDB存儲引擎包含完整的數據集,僅取決於簇本身內的其他數據。

下麵名,我們將介紹設置由NDB存儲引擎和一些MySQL伺服器構成的MySQL簇的設置方法。

目前,MySQL簇的部分可以獨立於MySQL伺服器進行配置。在MySQL簇中,簇的每個部分被視為一個節點。

註釋:在很多情況下,術語“節點”用於指電腦,但在討論MySQL簇時,它表示的是進程。在單台電腦上可以有任意數目的節點,所以我們才有可能將多個不同功能的節點配置在同一臺電腦上,為此,我們採用術語簇主機。

有三類簇節點,在最低的MySQL簇配置中,至少有三個節點,這三類節點分別是:

管理節點(MGM):這類節點的作用是管理MySQL簇內的其他節點,如提供配置數據,啟動並停止節點,運行備份等。由於這類節點負責管理其他節點的配置,所以管理節點應在其他節點之前先啟動。MGM節點是用命令ndb_mgm啟動的。

數據節點(NDB):這類節點用於保存簇的數據。數據集點的數目與副本的數目相關,是片段的倍數。例如,對於兩個副本,每個副本又兩個片段,那麼就有4個數據節點。沒有必要有一個以上的副本。。數據節點是用命令ndbd來啟動的。

SQL節點:這類節點是用來訪問簇數據的節點。對於MySQL簇,客戶端節點是使用NDB 簇存儲引擎的傳統MySQL伺服器。典型情況下,SQL節點是使用命令mysql -ndbcluster來啟動的,或將ndbcluster添加到my.cnf後面使用mysqld啟動。

簇配置包括對簇中單獨節點的配置,以及設置節點之間的單獨通信鏈路。對於目前設計的MySQL簇,其意圖在於,從處理器的能力,記憶體空間和寬頻來講,存儲節點是同質的,此外,為了提供單一的配置點,作為整體,簇的所有配置均位於一個文件中。

管理伺服器(MGM節點)負責管理簇配置文件和簇日誌。簇中的每個節點從管理伺服器檢索配置數據,並請求確定管理伺服器所在的位置的方式。當數據節點內出現有趣的事件時,節點將關於這類事件的信息傳輸到管理伺服器,然後,啊經這類信息寫入簇日誌。


4. 實現環境

現在,我們計劃建立有5個節點的MySQL CLuster體系,因此需要用到3台機器(sql和數據節點共用),分別做如下用途:

                 節點(用途)                 IP地址(主機名)
                 管理節點(MGM)              10.24.0.101(db1) nodeid = 1

                 數據節點1(NDBD1)           10.24.6.4 (db4) nodeid = 11
                 數據節點2(NDBD2)           10.24.6.6(db5) nodeid =12
                 SQL節點1(SQL1)            10.24.6.4(db2) nodeid = 21
                 SQL節點2(SQL2)            10.24.6.6(db3) nodeid = 22

5. MySQL-Cluster安裝包下載

對於MySQL-Cluster的安裝包下載,下載地址見http://dev.mysql.com/downloads/cluster/

mysql-cluster-gpl-7.4.7-debian7-x86_64.deb

6. 安裝

6.1. 清除之前的mysql痕跡

此外 如果之前安裝過mysql-server,在進行此次實驗之前,需要將mysql-server卸載,執行以下指令卸載mysql

sudo apt-get autoremove --purge mysql-server

sudo apt-get remove mysql-server

sudo apt-get autoremove mysql-server

sudo apt-get remove mysql-common (非常重要)

6.2. 安裝deb文件

sudo dpkg -i mysql-cluster-gpl-7.4.7-debian7-x86_64.deb

安裝目錄/opt/mysql/server-5.6

6.3. 存儲節點/SQL節點安裝

SQL節點和數據節點的安裝步驟基本相同,所以在設計為存儲節點或SQL節點的的每一臺機器上,以系統根用戶身份執行以下步驟:

mysql組和mysql用戶

檢查/etc/passwd和/etc/group/文件,查看在系統上是否已經存在mysql組和mysql用戶,這時因為某些操作系統會將其作為安裝進程的一部分創建。可以使用以下指令查看:

cat show /etc/passwd

cat show /etc/group

如果它們不存在,則需要創建新的mysql用戶組,然後為該組添加一個mysql用戶

groupadd mysql

useradd -g mysql mysql

6.4. 創建系統資料庫的腳本

sudo /opt/mysql/server-5.6/scripts/mysql_install_db --user=mysql

如果此腳本不能運行,若報錯為主機名不匹配的話,則很有可能是下載的版本不對,查看操作系統是32位還是64位,選擇正確的版本。若報錯找不到預設的文件,則很有可能是因為之前的mysql-server沒有卸載,執行上文提供的指令,徹底卸載mysql-server

成功結果:

To start mysqld at boot time you have to copy

support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !

To do so, start the server, then issue the following commands:

  /opt/mysql/server-5.6/bin/mysqladmin -u root password 'new-password'

  /opt/mysql/server-5.6/bin/mysqladmin -u root -h drbd01 password 'new-password'

Alternatively you can run:

  /opt/mysql/server-5.6/bin/mysql_secure_installation

which will also give you the option of removing the test

databases and anonymous user created by default.  This is

strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:

  cd /opt/mysql/server-5.6 ; /opt/mysql/server-5.6/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl

  cd mysql-test ; perl mysql-test-run.pl

Support MySQL by buying support/licenses at http://shop.mysql.com

WARNING: Found existing config file /opt/mysql/server-5.6/my.cnf on the system.

Because this file might be in use, it was not replaced,

but was used in bootstrap (unless you used --defaults-file)

and when you later start the server.

The new default config file was created as /opt/mysql/server-5.6/my-new.cnf,

please compare it with your file and take the changes you need.

6.5.設置MySQL伺服器和數據目錄必要的許可權

chown -R root .

chown -R mysql data

3

chgrp -R mysql .

6.6. 拷貝mysql.server

   
   

sudo cp /opt/mysql/server-5.6/support-files/mysql.server /etc/init.d/mysql

chmod +x /etc/init.d/mysql

6.7. 拷貝 my.cnf

sudo cp /opt/mysql/server-5.6/my-new.cnf /etc/my.cnf

sudo vim /etc/my.cnf

 

 

6.8. 設置root密碼

sudo apt-get install mysql-client

mysqladmin -u root flush-privileges password "123456"

 

6.9. 管理節點安裝

對於管理(MGM)節點,不需要安裝mysqld可執行文件,僅需要安裝用於MGM伺服器和客戶端的二進位文件,這類文件可在下載的檔案文件中找到。假定將下載的檔案文件放在了/var/tmp文件下,以系統管理員的身份執行以下步驟,在簇管理節點主機上安裝ndb_mgmd和ndb_mgm

ndb_mgmd:ndb管理伺服器

ndb_mgm: ndb管理客戶端

6.10. 安裝deb文件

sudo dpkg -i mysql-cluster-gpl-7.4.7-debian7-x86_64.deb

安裝目錄/opt/mysql/server-5.6

 

6.11. 創建管理目錄

sudo mkdir /usr/local/mysql/

6.12. 拷貝ndb管理程式

sudo cp /opt/mysql/server-5.6/bin/ndb_mgm* /usr/local/mysql/

6.13. 埠

註釋:簇管理節點的預設埠是1186,數據節點的預設端後是2202。

 


6.14.  配置ndb管理節點

cd /usr/local/mysql/

sudo vim config.ini:

 

# Options affecting ndbd processes on all data nodes:

[NDBD DEFAULT]

NoOfReplicas=2

DataMemory=80M

IndexMemory=18M

 

# TCP/IP options:

[TCP DEFAULT]

#portnumber=2202

 

# Management process options:

[NDB_MGMD]

nodeid=1

HostName=10.24.0.101

DataDir=/usr/local/mysql

 

# Options for data node :

[NDBD]

nodeid=11

HostName=10.24.6.4

DataDir=/opt/mysql/server-5.6/data/

 

# Options for data node :

[NDBD]

nodeid=12

HostName=10.24.6.6

DataDir=/opt/mysql/server-5.6/data/

 

# SQL node options:

[MYSQLD]

nodeid=21

HostName=10.24.6.4

[MYSQLD]

nodeid=22

HostName=10.24.6.6

 

 


7. 啟動

完成配置後,啟動簇並不困難。必須在數據節點所在的主機上分別啟動每個簇節點進程。儘管能夠按任何順序啟動節點,但還是建議,首先啟動管理節點,然後啟動存儲節點,最後啟動SQL節點。

7.1. 管理節點啟動

可使用nbd_mgm指令登錄到ndb_mgm客戶端,登錄後,可使用show指令來查看簇中個節點情況。

註意,啟動MGM時,必須用-f或者–config-file選項,告訴ndb_mgmd到哪裡找到配置文件。首次啟動時必須選用–initial選項,或者更改了MGM節點的配置信息後,也需選用–initial選項。

 

sudo /usr/local/mysql/ndb_mgmd -f /usr/local/mysql/config.ini

 

Ndb客戶端查看:

 

wiki@zoweewiki:/usr/local/mysql$ /usr/local/mysql/ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm>

ndb_mgm>

ndb_mgm>

ndb_mgm> show

Connected to Management Server at: localhost:1186

Cluster Configuration

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

[ndbd(NDB)]     2 node(s)

id=11   @10.24.6.4  (mysql-5.6.25 ndb-7.4.7, Nodegroup: 0, *)

id=12   @10.24.6.6  (mysql-5.6.25 ndb-7.4.7, Nodegroup: 0)

 

[ndb_mgmd(MGM)] 1 node(s)

id=1    @10.24.0.101  (mysql-5.6.25 ndb-7.4.7)

 

[mysqld(API)]   2 node(s)

id=21   @10.24.6.4  (mysql-5.6.25 ndb-7.4.7)

id=22   @10.24.6.6  (mysql-5.6.25 ndb-7.4.7)


7.2. 數據節點啟動

在每台數據節點主機上,對於首次啟動,運行下述命令啟動NDBD進程:

sudo /opt/mysql/server-5.6/bin/ndbd --initial

註意,應僅在首次啟動時ndbd時,或者在備份/恢復或者配置變化後重啟ndbd時使用“–initial”參數,這很重要,因為該參數會使數據節點刪除由早期ndbd實例創建的,用於恢復的任何文件,包括恢復用日誌文件。

 

7.3. MYSQL節點啟動

sudo /etc/init.d/mysql restart

 

啟動日誌:

/opt/mysql/server-5.6/data/drbd02.err

151015 14:33:19 mysqld_safe Starting mysqld daemon with databases from /opt/mysql/server-5.6/data

2015-10-15 14:33:22 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

2015-10-15 14:33:22 0 [Note] /opt/mysql/server-5.6/bin/mysqld (mysqld 5.6.25-ndb-7.4.7-cluster-gpl-log) starting as process 15192 ...

2015-10-15 14:33:23 15192 [Note] Plugin 'FEDERATED' is disabled.

2015-10-15 14:33:23 15192 [Note] InnoDB: Using atomics to ref count buffer pool pages

2015-10-15 14:33:23 15192 [Note] InnoDB: The InnoDB memory heap is disabled

2015-10-15 14:33:23 15192 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins

2015-10-15 14:33:23 15192 [Note] InnoDB: Memory barrier is not used

2015-10-15 14:33:23 15192 [Note] InnoDB: Compressed tables use zlib 1.2.3

2015-10-15 14:33:23 15192 [Note] InnoDB: Using Linux native AIO

2015-10-15 14:33:23 15192 [Note] InnoDB: Not using CPU crc32 instructions

2015-10-15 14:33:23 15192 [Note] InnoDB: Initializing buffer pool, size = 128.0M

2015-10-15 14:33:23 15192 [Note] InnoDB: Completed initialization of buffer pool

2015-10-15 14:33:24 15192 [Note] InnoDB: Highest supported file format is Barracuda.

2015-10-15 14:33:24 15192 [Note] InnoDB: 128 rollback segment(s) are active.

2015-10-15 14:33:24 15192 [Note] InnoDB: Waiting for purge to start

2015-10-15 14:33:24 15192 [Note] InnoDB: 5.6.25 started; log sequence number 1626027

2015-10-15 14:33:24 15192 [Note] NDB: Changed global value of binlog_format from STATEMENT to MIXED

2015-10-15 14:33:24 15192 [Note] NDB: NodeID is 22, management server '10.24.0.101:1186'

2015-10-15 14:33:25 15192 [Note] NDB[0]: NodeID: 22, all storage nodes connected

2015-10-15 14:33:25 15192 [Warning] NDB: server id set to zero - changes logged to bin log with server id zero will be logged with another server id by slave mysqlds

2015-10-15 14:33:25 15192 [Note] NDB Binlog: Starting...

2015-10-15 14:33:25 15192 [Note] NDB Util: Starting...

2015-10-15 14:33:25 15192 [Note] NDB Index Stat: Starting...

2015-10-15 14:33:25 15192 [Note] NDB Index Stat: Wait for server start completed

2015-10-15 14:33:25 15192 [Note] NDB Util: Wait for server start completed

2015-10-15 14:33:25 15192 [Note] NDB Binlog: Started

2015-10-15 14:33:25 15192 [Note] NDB Binlog: Setting up

2015-10-15 14:33:25 15192 [Note] NDB Binlog: Created schema Ndb object, reference: 0x80040016, name: 'Ndb Binlog schema change monitoring'

2015-10-15 14:33:25 15192 [Note] NDB Binlog: Created injector Ndb object, reference: 0x80050016, name: 'Ndb Binlog data change monitoring'

2015-10-15 14:33:25 15192 [Note] NDB Binlog: Setup completed

2015-10-15 14:33:25 15192 [Note] NDB Binlog: Wait for server start completed

2015-10-15 14:33:25 15192 [Note] Server hostname (bind-address): '*'; port: 3306

2015-10-15 14:33:25 15192 [Note] IPv6 is available.

2015-10-15 14:33:25 15192 [Note]   - '::' resolves to '::';

2015-10-15 14:33:25 15192 [Note] Server socket created on IP: '::'.

2015-10-15 14:33:25 15192 [Note] Event Scheduler: Loaded 0 events

2015-10-15 14:33:25 15192 [Note] /opt/mysql/server-5.6/bin/mysqld: ready for connections.

Version: '5.6.25-ndb-7.4.7-cluster-gpl-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Cluster Community Server (GPL)

2015-10-15 14:33:25 15192 [Note] NDB Util: Wait for cluster to start

2015-10-15 14:33:25 15192 [Note] NDB Util: Started

2015-10-15 14:33:25 15192 [Note] NDB Binlog: Check for incidents

2015-10-15 14:33:25 15192 [Note] NDB Binlog: Wait for cluster to start

2015-10-15 14:33:25 15192 [Note] NDB Index Stat: Wait for cluster to start

2015-10-15 14:33:25 15192 [Note] ndb_index_stat_proc: Created Ndb object, reference: 0x80070016, name: 'Ndb Index Statistics monitoring'

2015-10-15 14:33:25 15192 [Note] NDB Index Stat: Started

2015-10-15 14:33:26 15192 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$mysql/ndb_schema

2015-10-15 14:33:26 15192 [Note] NDB Binlog: logging ./mysql/ndb_schema (UPDATED,USE_WRITE)

2015-10-15 14:33:26 15192 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$mysql/ndb_apply_status

2015-10-15 14:33:26 15192 [Note] NDB Binlog: logging ./mysql/ndb_apply_status (UPDATED,USE_WRITE)

2015-10-15 14:33:26 15192 [Note] NDB: Cleaning stray tables from database 'ndb_12_fs'

2015-10-15 14:33:26 15192 [Note] NDB: Cleaning stray tables from database 'ndbinfo'

2015-10-15 14:33:26 15192 [Note] NDB: Cleaning stray tables from database 'performance_schema'

2015-10-15 14:33:26 15192 [Note] NDB: Cleaning stray tables from database 'test'

2015-10-15 14:33:26 15192 [Note] NDB Binlog: Wait for first event

2015-10-15 14:33:26 [NdbApi] INFO     -- Flushing incomplete GCI:s < 4554/3

2015-10-15 14:33:26 [NdbApi] INFO     -- Flushing incomplete GCI:s < 4554/3

2015-10-15 14:33:26 15192 [Note] NDB Binlog: starting log at epoch 4554/3

2015-10-15 14:33:26 15192 [Note] NDB Binlog: Got first event

2015-10-15 14:33:26 15192 [Note] NDB Binlog: ndb tables writable

2015-10-15 14:33:26 15192 [Note] NDB Binlog: Startup and setup completed

2015-10-15 14:33:26 15192 [Note] NDB Schema dist: Data node: 11 reports subscribe from node 21, subscriber bitmask 0200000

2015-10-15 14:33:26 15192 [Note] NDB Schema dist: Data node: 12 reports subscribe from node 21, subscriber bitmask 0200000

2015-10-15 14:34:03 15192 [Warning] IP address '10.24.6.170' could not be resolved: Name or service not known

2015-10-15 14:34:56 15192 [Note] NDB Schema dist: Data node: 11 reports subscribe from node 21, subscriber bitmask 00

2015-10-15 14:34:56 15192 [Note] NDB Schema dist: Data node: 12 reports subscribe from node 21, subscriber bitmask 00

2015-10-15 14:35:03 15192 [Note] NDB Schema dist: Data node: 11 reports subscribe from node 21, subscriber bitmask 0200000

2015-10-15 14:35:03 15192 [Note] NDB Schema dist: Data node: 12 reports subscribe from node 21, subscriber bitmask 0200000

2015-10-15 14:41:04 15192 [Note] NDB Schema dist: Data node: 11 failed, subscriber bitmask 00

2015-10-15 14:42:36 15192 [Note] NDB Schema dist: Data node: 12 reports subscribe from node 21, subscriber bitmask 00


8. 測試

8.1. 常規測試

為了讓數據表能夠在cluster中正常複製,創建數據表時必須指定為ndbcluster引擎(engine=ndb或engine=ndbcluster)。

登錄到10.24.64的mysql,然後創建一個新資料庫songzi,並創建一個ndbcluster引擎的數據表test(id int,name char(10)),並向表中插入一條數據(0,songzi)。10.24.6.4上的操作及結果如下圖:

 

然後登錄10.24.6.6的mysql,可查看到數據已同步,並且新建的表及數據也存在。10.24.6.6上的操作及結果如下圖:

 


8.2. 模擬NDB節點Crash

終止10.24.6.4上的NDB進程,執行以下指令查看NDB進程情況

ps -ef | grep ndbd

kill 24077

ps -ef | grep ndbd

具體操作及結果見下圖:

 

也可以在ndb_mgm管理節點客戶端查看到10.24.0.101上的NDB節點已停掉

 

然後分別登錄到10.24.6.4和10.24.6.6的mysql,可發現依然能夠查詢到數據。結果如下圖

10.24.6.4

 

10.24.6.6

 

此結果說明測試成功,即當有一個NDB節點Crash後,整個MySQL環境仍可以正常服務。

8.3. 模擬SQL節點Crash

在上10.24.6.4上終止mysqld進程,可執行以下指令:

killall mysqld

也可以在ndb_mgm管理節點客戶端查看到10.24.6.4上的SQL節點已停掉

 

登錄到10.24.6.6上的mysql,可查看到數據依然存在

 

此結果說明測試成功,及當有一個SQL節點Crash後,整個MySQL-Cluster環境仍可以工作。

至此,整個MySQL-Cluster安裝及配置實驗已完成。實驗結束後,可使用指令shell> ndb_mgm -e shutdown或者ndb_mgm>shutdown來關閉簇中的所有節點。

 

 

 


9. 遇到問題

 

 

 

10. 總結

  • Mysql cluster是一個統一的共用集群
  • 多mysql同時共用
  • 一個值多份存儲,不是像redis那樣根據一致性hash分佈存儲
  • 高併發、高可用、高伸縮性
  • share nothing架構
  • 通過增加數據節點擴展:通過32個數據節點實現每秒2億條NoSQL查詢,以及通過16個數據節點每秒查詢近250萬SQL語句
  • 推薦使用lvs + keepalived + mysql cluster 實現集群mysqlMySQL Cluster是一個實時可擴展且符合ACID的事務型記憶體資料庫

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 問題現象:使用綠色版PL/SQL工具進行登錄時報如下截圖錯誤: 問題描述:初始化失敗,無法鎖定oci.dll 解決方法:在PLSQL的菜單欄里依次選擇 工具—>首選項,在OCI庫(自動檢測為空)項中手動更改其位置,指向bin目錄中的oci.dll的位置,問題即可解決。 註意:絕對路徑,如D:\Pro... ...
  • HBase是一種資料庫:HadoopDatabase顧名思義就是Hadoop資料庫,它是一種基於hadoop文件系統HDFS的一種分散式資料庫,專門設計用來快速隨機讀寫大規模數據。本文介紹HBase的下載與安裝的整個過程。 一、HBase的下載 1.登錄HBase官網http://hbase.apa ...
  • 一、選擇Percona Server、MariaDB還是MYSQL mysql應用源碼:http://www.jinhusns.com/Products/Download/?type=xcj 1、Mysql三種存儲引擎 MySQL提供了兩種存儲引擎:MyISAM和 InnoDB,MySQL4和5使用 ...
  • 接上一篇Mysql性能優化一 建立適當的索引 說起提高資料庫性能,索引是最物美價廉的東西了。不用加記憶體,不用改程式,不用調sql,只要執行個正確的'create index',查詢速度就可能提高百倍千倍,這可真有誘惑力。可是天下沒有免費的午餐,查詢速度的提高是以插入、更新、刪除的速度為代價的,這些寫 ...
  • 在部署環境時,不同的環境可能會有一些不同步,而個人遇到的問題就是在開發環境中表中均有欄位 BestCaseId 和 RiskId 欄位,生產環境中目前只有 BestCaseId 欄位,新搭建的測試環境中暫時都不存在這兩個欄位(某些原因需要另一單獨測試環境)。 保證在生產環境中的 BestCaseId ...
  • 1. Linux系統配置 1.1. vm.overcommit_memory設置 overcommit_memory文件指定了內核針對記憶體分配的策略,其值可以是0、1、2。 0, 表示內核將檢查是否有足夠的可用記憶體供應用進程使用;如果有足夠的可用記憶體,記憶體申請允許;否則,記憶體申請失敗,並把錯誤返回給 ...
  • 1. Redis主從配置 1.1. 設置主從複製 Master <= Salve 10.24.6.5:6379 <= 10.24.6.7:6379 1.2. 取消主從複製 1.3. 刪除所有數據 flushdb:刪除這個db下的。 flushall:刪除所有 2. Sentinel高可用配置 Sen ...
  • Range --創建分區表 create table emp3(id number(4) primary key,name varchar2(20),eff_dt date) partition by range(eff_dt) ( partition p1 values less than (to ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...