您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關如何安裝部署TDSQL ,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
分布式數據庫(Tencent Distributed SQL,TDSQL)是騰訊打造的一款分布式數據庫產品,具備強一致高可用、全球部署架構、分布式水平擴展、高性能、企業級安全等特性,同時提供智能 DBA、自動化運營、監控告警等配套設施,為客戶提供完整的分布式數據庫解決方案。
TDSQL按照官方要求配置相對較高,現通過4臺虛擬機演示TDSQL的全套部署。 如有不對的地方請指證 wx:moonstar00
** 機器數量規劃:**
tdsql 規劃機器如下:4臺(CPU:2core/MEM:8G/HDD:50G) ,內存至少5G以上 ,CPU 至少2C以上, 否則檢查通不過
####################### TDSQL安裝部署 ####################### 1.設主機名 hostnamectl set-hostname huyidb01 hostnamectl set-hostname huyidb02 hostnamectl set-hostname huyidb03 hostnamectl set-hostname huyidb04 2.配置主機名 vim /etc/hosts 10.85.10.51 huyidb01 10.85.10.52 huyidb02 10.85.10.53 huyidb03 10.85.10.54 huyidb04 3.設置時間同步 以huyidb01為主時鐘 mount /dev/cdrom /mnt yum -y install ntp* [root@huyidb01 ~]# vim /etc/ntp.conf #同步地址 server 127.127.1.0 iburst systemctl restart ntpd.service [root@huyidb02 ~]# vim /etc/ntp.conf server 10.85.10.51 restrict 10.85.10.51 mask 255.255.240.0 nomodify notrap systemctl restart ntpd.service ntpdate -u 10.85.10.51 [root@huyidb03 ~]# vim /etc/ntp.conf server 10.85.10.51 restrict 10.85.10.51 mask 255.255.240.0 nomodify notrap systemctl restart ntpd.service ntpdate -u 10.85.10.51 [root@huyidb04 ~]# vim /etc/ntp.conf server 10.85.10.51 restrict 10.85.10.51 mask 255.255.240.0 nomodify notrap systemctl restart ntpd.service ntpdate -u 10.85.10.51 4.配置免密登錄(管理機 110.85.10.54 上操作) ssh-keygen -t rsa --這里不用輸入密碼,免密碼登錄 ssh-copy-id 10.85.10.51 --下面要輸入遠程主機的密碼 ssh-copy-id 10.85.10.52 ssh-copy-id 10.85.10.53 ssh-copy-id 10.85.10.54 #這里是通過IP copy的 ,測試的時候也只要用IP 例: ssh 10.85.10.51 5.準備數據目錄路徑(所有機器) mkdir -p /mysql/data mkdir -p /mysql/log
#安裝ANSIBLE unzip tdsql_full_install_ansible.zip cd tdsql_full_install_ansible python settings/install_ansible.py
#配置tdsql_hosts vi /soft/tdsql_full_install_ansible/tdsql_hosts [envcheck] tdsql_huyidb01 ansible_ssh_host=10.85.10.51 tdsql_huyidb02 ansible_ssh_host=10.85.10.52 tdsql_huyidb03 ansible_ssh_host=10.85.10.53 tdsql_huyidb04 ansible_ssh_host=10.85.10.54 [zk] tdsql_zk1 ansible_ssh_host=10.85.10.51 tdsql_zk2 ansible_ssh_host=10.85.10.52 tdsql_zk3 ansible_ssh_host=10.85.10.53 [scheduler] tdsql_scheduler1 ansible_ssh_host=10.85.10.52 tdsql_scheduler2 ansible_ssh_host=10.85.10.53 [oss] tdsql_oss1 ansible_ssh_host=10.85.10.52 tdsql_oss2 ansible_ssh_host=10.85.10.53 [chitu] tdsql_chitu1 ansible_ssh_host=10.85.10.52 tdsql_chitu2 ansible_ssh_host=10.85.10.53 [monitor] tdsql_monitor1 ansible_ssh_host=10.85.10.52 tdsql_monitor1 ansible_ssh_host=10.85.10.53 [db] tdsql_db1 ansible_ssh_host=10.85.10.51 tdsql_db2 ansible_ssh_host=10.85.10.52 tdsql_db3 ansible_ssh_host=10.85.10.53 [proxy] tdsql_proxy1 ansible_ssh_host=10.85.10.51 tdsql_proxy2 ansible_ssh_host=10.85.10.52 tdsql_proxy3 ansible_ssh_host=10.85.10.53 [hdfs] tdsql_hdfs1 ansible_ssh_host=10.85.10.54 [lvs] tdsql_lvs1 ansible_ssh_host=10.85.10.52 tdsql_lvs2 ansible_ssh_host=10.85.10.53 [kafka] tdsql_kafka1 ansible_ssh_host=10.85.10.51 tdsql_kafka2 ansible_ssh_host=10.85.10.52 tdsql_kafka3 ansible_ssh_host=10.85.10.53 [consumer] tdsql_consumer1 ansible_ssh_host=10.85.10.54 [es] tdsql_es1 ansible_ssh_host=10.85.10.54 [newdb] tdsql_newdb1 ansible_ssh_host=1.1.1.1 tdsql_newdb2 ansible_ssh_host=2.2.2.2 tdsql_newdb3 ansible_ssh_host=3.3.3.3 修改 ansible 變量 vi /soft/tdsql_full_install_ansible/group_vars/all zk_num: 3 netif_name: ens38 #<—填入 scheduler(ifconfig 看到的)網卡的名稱 tdsql_pass: a+complex+password zk_rootdir: /tdsqlzk #下面參數后面安裝相關模塊時在調整 metadb_ip: 10.120.109.204 metadb_port: 15001 metadb_ip_bak: 10.120.109.205 metadb_port_bak: 15001 metadb_user: hanlon metadb_password: hanlon ssh_port: 36000 hdfs_datadir: /data2/hdfs,/data3/hdfs,/data4/hdfs kafka_logdir: /data2/kafka,/data3/kafka,/data4/kafka es_mem: 8 es_log_days: 7 es_base_path: /data/application/es-install/es tdsql_secret_pass: K2JatUv5llBbMrske/k2YbqC oc_secret_pass: LGhVs0v5nVxcOLQie/k9bb2I clouddba_metadb_pass: h6Wyg2Xy
#執行安裝 part1_site.yml sh encrypt.sh <---------必須執行,更新密文密碼 ansible-playbook -i tdsql_hosts part1_site.yml 執行了近20多分鐘 ,執行完成要無failed=0 PLAY RECAP ******************************************************************************************************************************************************** chitu1 : ok=20 changed=19 unreachable=0 failed=0 chitu2 : ok=20 changed=19 unreachable=0 failed=0 db1 : ok=13 changed=12 unreachable=0 failed=0 db2 : ok=13 changed=12 unreachable=0 failed=0 db3 : ok=13 changed=12 unreachable=0 failed=0 huyidb01 : ok=30 changed=19 unreachable=0 failed=0 huyidb02 : ok=27 changed=16 unreachable=0 failed=0 huyidb03 : ok=27 changed=16 unreachable=0 failed=0 huyidb04 : ok=27 changed=17 unreachable=0 failed=0 oss1 : ok=14 changed=11 unreachable=0 failed=0 oss2 : ok=14 changed=11 unreachable=0 failed=0 proxy1 : ok=13 changed=10 unreachable=0 failed=0 proxy2 : ok=13 changed=10 unreachable=0 failed=0 proxy3 : ok=13 changed=10 unreachable=0 failed=0 scheduler1 : ok=25 changed=23 unreachable=0 failed=0 scheduler2 : ok=22 changed=20 unreachable=0 failed=0 zk1 : ok=19 changed=17 unreachable=0 failed=0 zk2 : ok=19 changed=17 unreachable=0 failed=0 zk3 : ok=19 changed=17 unreachable=0 failed=0
#錯誤:
TASK [zk_cluster : upload the template file zk_configure.py to the dst host] ************************************************************************************************************************************************************
fatal: [tdsql_zk1]: FAILED! => {“changed”: false, “msg”: “AnsibleUndefinedVariable: “hostvars[‘zk1']” is undefined”}
fatal: [tdsql_zk2]: FAILED! => {“changed”: false, “msg”: “AnsibleUndefinedVariable: “hostvars[‘zk1']” is undefined”}
fatal: [tdsql_zk3]: FAILED! => {“changed”: false, “msg”: “AnsibleUndefinedVariable: “hostvars[‘zk1']” is undefined”}
to retry, use: --limit @/soft/tdsql_full_install_ansible/part1_site.retry
原因: tdsql_hosts 配置標簽不規范 , 版本不同,標簽有所不同. 具體的參考模板,只改IP)
解決辦法: tdsql_zk1 改為 zk1
#初始化chitu http://10.85.10.52/tdsqlpcloud 注意這里的OSS IP ,可能不是實際IP 可以查看cat /data/application/OSS/conf/scheduler.xml 或 netstat 查看 [root@huyidb02 ~]# netstat -an | grep 8080 tcp 0 0 192.168.58.131:8080 0.0.0.0:* LISTEN
注意這里的OSS IP ,可能不是實際IP 可以查看cat /data/application/OSS/conf/scheduler.xml 或 netstat 查看 [root@huyidb02 ~]# netstat -an | grep 8080 tcp 0 0 192.168.58.131:8080 0.0.0.0:* LISTEN
機型查看: [root@huyidb02 data]# dmidecode | grep “Product Name” Product Name: VMware Virtual Platform Product Name: 440BX Desktop Reference Platform #DB機型 這里填 440BX
注意:不同DB要在不同的IDC
同一個網關組的要在同一個IDC中
登錄運營管理平臺:帳號密碼admin/123456
測試登錄 [root@huyidb02 data]# mysql -utdsqlpcloud -h20.85.10.52 -P15001 -p'tdsqlpcloud' Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 3171 Server version: 5.7.17-11-V2.0R540D002-20191226-1152-log Source distribution Copyright © 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type ‘help;' or ‘\h' for help. Type ‘\c' to clear the current input statement. MySQL [(none)]>
在管理庫修改 vi /soft/tdsql_full_install_ansible/group_vars/all metadb_ip: 10.85.10.52 metadb_port: 15001 metadb_ip_bak: 10.85.10.53 metadb_port_bak: 15001 metadb_user: tdsqlpcloud metadb_password: tdsqlpcloud 執行安裝 part2_site.yml sh encrypt.sh <---------必須執行,更新密文密碼 ansible-playbook -i tdsql_hosts part2_site.yml 注意:failed=0 PLAY RECAP ******************************************************************************************************************************************************** chitu1 : ok=19 changed=16 unreachable=0 failed=0 chitu2 : ok=5 changed=4 unreachable=0 failed=0 huyidb01 : ok=18 changed=11 unreachable=0 failed=0 huyidb02 : ok=18 changed=11 unreachable=0 failed=0 huyidb03 : ok=18 changed=11 unreachable=0 failed=0 huyidb04 : ok=18 changed=11 unreachable=0 failed=0 monitor1 : ok=12 changed=12 unreachable=0 failed=0 oss1 : ok=14 changed=9 unreachable=0 failed=0 oss2 : ok=14 changed=9 unreachable=0 failed=0 scheduler1 : ok=31 changed=26 unreachable=0 failed=0 scheduler2 : ok=22 changed=18 unreachable=0 failed=0 #在任意一臺 scheduler 機器上執行下面的命令: cd /data/application/scheduler/bin ./agent_config --mode modify --option=“ocagent_port” --value=“8966” ./agent_config --mode modify --option=“hadoop_dir” --value="/data/home/tdsql/hadoop-3.2.1/bin"
#安裝備用赤兔(如果有另一個未初始化的 chitu) 將已初始化的 chitu 機器上拷貝 2 個文件到未初始化的 chitu 機器上,并刪除未初始化 chitu 機器上的 crontab,如下: 10.85.10.52 已初始化 chitu 10.85.10.53 未初始化 chitu (1)在 52 機器上,拷貝文件到 53 機器上 scp -p /data/website/tdsqlpcloud/www/config/database.php 10.85.10.53:/data/website/tdsqlpcloud/www/config/ scp -p /data/website/tdsqlpcloud/www/config/install.lock 10.85.10.53:/data/website/tdsqlpcloud/www/config/ (2)刪除 53 機器上 nginx 用戶的 crontab cp -a /var/spool/cron/nginx /data/tools/nginx_cron_bak rm -f /var/spool/cron/nginx (3)測試,登錄 53 的 chitu http://10.85.10.53/tdsqlpcloud 至此TDSQL的基本模塊已安裝完成。
安裝其它模塊(可選)
安裝以下模塊之前要確保TDSQL核心模塊安裝無誤后再進行。
如果需要使用hdfs異地冷備存儲binlog和鏡像文件,用于數據回檔恢復,安裝hdfs。
如果需要使用tdsql默認提供的接入層lvs,安裝lvs。
如果需要使用多源同步功能,安裝kafka和consumer。
如果需要使用網關日志分析及sql審計功能,安裝es。
#安裝 hdfs (1)準備 hdfs 的數據目錄的路徑 首先用 lsblk 查看磁盤信息 格式化為 xfs 文件系統 mkfs.xfs -f /dev/sdg 創建目錄 mkdir -p /mysql/backup 修改/etc/fstab 文件,設置自動掛載到指定路徑 /dev/sdg /mysql/backup xfs defaults,noatime 0 0 掛載磁盤 mount -a (2)設置主機名 在 hdfs 機器上設置主機名,hdfs 集群中主機名不能重復,不能有下劃線、中劃線等特殊字符, hostnamectl set-hostname huyidb04 (3)檢查 tdsql_hosts 文件 vim tdsql_hosts [hdfs] <—填入 hdfs 機器地址,hdfs 的數量只能是 1 或 3 hdfs1 ansible_ssh_host=10.85.10.54 (4)修改 hdfs 變量 修改 group_vars/all 中下面的相關變量 vim group_vars/all — ssh_port: 36000 <----實際的 ssh 通信端口 hdfs_datadir: /mysql/backup <----多個迪特 一個磁盤一個路徑,逗號分隔 注意這些數據文件路徑的權限要是 tdsql,如下: chown -R tdsql:users /mysql/backup (5)#安裝 hdfs 單點 (我的是單點HDFS) 執行安裝 ansible-playbook -i tdsql_hosts hdfs_single.yml su - tdsql hdfs namenode -format <—格式化 namenode 啟動 namenode 和 datanode : hdfs --daemon start namenode hdfs --daemon start datanode 附:用 tdsql 用戶關閉 hdfs 進程 : hdfs --daemon stop datanode hdfs --daemon stop namenode (6)#安裝 hdfs 高可用架構 (如果是高可用 用下面的方式安裝) 3 個節點,并且 zk 集群不能是單點。 執行安裝 hdfs ansible-playbook -i tdsql_hosts hdfs.yml su - tdsql 用 tdsql 用戶初始化 hdfs 集群,初始化順序如下,初始化的工作只用做一次,不要重復初始化 用 tdsql 用戶在 hdfs1 機器,格式化 zk hdfs zkfc -formatZK 用 tdsql 用戶在所有機器,啟動 journalnode hdfs --daemon start journalnode 用 tdsql 用戶在 hdfs1 機器,格式化并啟動 namenode hdfs namenode -format hdfs --daemon start namenode 用 tdsql 用戶在 hdfs2 機器,格式化 namenode hdfs namenode -bootstrapStandby 用 tdsql 用戶啟動 hdfs 集群,啟動順序如下,已經啟動的進程就不用重復再啟動了,查看啟動的進程”jps” 在所有 hdfs 機器上啟動 journalnode hdfs --daemon start journalnode 在 hdfs1 和 hdfs2 上啟動 namenode hdfs --daemon start namenode 在 hdfs1 和 hdfs2 上啟動 zkfc hdfs --daemon start zkfc 在所有 hdfs 機器上啟動 datanode hdfs --daemon start datanode 附:用 tdsql 用戶關閉 hdfs 集群,關閉順序如下 在所有 hdfs 機器上關閉 datanode hdfs --daemon stop datanode 在 hdfs1 和 hdfs2 上關閉 zkfc hdfs --daemon stop zkfc 在 hdfs1 和 hdfs2 上關閉 namenode hdfs --daemon stop namenode 在所有 hdfs 機器上關閉 journalnode hdfs --daemon stop journalnode (7)在 hdfs 集群下查看/tdsqlbackup 路徑 用 tdsql 用戶執行以下命令 #查看/tdsqlbackup 目錄是否已經被自動創建,權限是否如下 hadoop fs -ls / drwxr-xr-x - tdsql supergroup 0 2019-01-02 17:52 /tdsqlbackup 如果目錄不在或者權限不對,用下面命令修改: hadoop fs -mkdir /tdsqlbackup hadoop fs -chown tdsql.supergroup /tdsqlbackup (8)管理 hdfs 集群 用 tdsql 用戶執行以下命令 查看所有 namenode 節點狀態,及主備情況(只適用于高可用 3 節點架構) hdfs haadmin -getAllServiceState 查看所有 datanode 節點的狀態,及上報的容量情況 hdfs dfsadmin -report (9)注意 用 tdsql 用戶執行 jps 命令,可以看到 hdfs 的進程名稱(只適用于高可用 3 節點架構) hdfs1 和 hdfs2 機器上應該看到 NameNode、JournalNode、DataNode、DFSZKFailoverController hdfs3 機器上應該看到 DataNode、JournalNode (10)配置 hdfs 監控 如果有 HDFS,但是沒有配置 HDFS 監控,到"“集群管理->集群配置”中設置“HDFS 服務列表”", 注意:如上圖所示填寫 namenode 節點(一般 2 個)的 50070 端口 生產環境不能用單節點 hdfs,單節點架構的 hdfs 的端口號是 9870
#安裝 lvs lvs 機器建議單獨部署,不建議和別人復用(最多只能和 zk 復用)。 (1)檢查 tdsql_hosts 文件 vim tdsql_hosts [lvs] <—填入 lvs 地址,lvs 的數量固定為 2 lvs1 ansible_ssh_host=10.85.10.52 lvs2 ansible_ssh_host=10.85.10.53 (2)安裝 lvs ansible-playbook -i tdsql_hosts lvs.yml (3)赤兔前臺操作 lvs 接入層管理 -> LVS 設備資源管理 -> 上報 LVS 設備資源 上報 lvs 機器信息(2 臺 lvs 機器信息都要上報) 設備 IP:填入 LVS 機器的通信 ip 地址。 網卡名字:通信網卡設備名。 子網掩碼:填入實際的子網掩碼。 IDC:lvs 機器需要劃分到同一個 IDC 中,比如這里的“IDC_SZ_YDGL_0401_000001”。
創建 VIP(不能選取部署的機器 IP 作為 VIP,需要另選之外一個)
VIP:規劃一個 vip 的地址,vip 的地址要和 lvs 機器的通信 ip 地址在同一個網段內。
設備 IP 列表:填入 lvs 機器的通信 ip 地址,一行一個。
創建 VIPGroup
VIPGroup 名:新建一個 vipgroup,取一個有意義的名字。
#安裝 kafka (1)檢查 tdsql_hosts 文件 vim tdsql_hosts [kafka] <----填入 kafka 集群的地址,kafka 的數量固定為 3 kafka1 ansible_ssh_host=10.85.10.51 <----kafka 機器的 java 虛擬機占用 3 個 g 以上內存 kafka2 ansible_ssh_host=10.85.10.52 kafka3 ansible_ssh_host=10.85.10.53 (2)修改多源同步變量 修改 group_vars/all 中下面的相關變量 vim group_vars/all kafka_logdir: /mysql/log/kafka #日志要創建kafka目錄 (3)執行安裝多源同步 ansible-playbook -i tdsql_hosts kafka.yml (4)驗證是否安裝成功 cd /data/application/kafka_2.12-2.3.1/logs vim server.log <----查看 kafka 啟動信息 #安裝 consumer (1) 查看 tdsql_hosts 文件 [consumer] <—填入消費者的地址,數量固定為 1 consumer1 ansible_ssh_host=10.240.139.35 (2)執行安裝 consumer ansible-playbook -i tdsql_hosts consumer.yml (3)啟動消費者服務 在 consumer 的機器上,使用下面命令啟動消費者服務 cd /data/application/consumer/bin/ ./binlogconsumermgn --zklist 10.240.139.35:2181 --zkrootpath /noshard1 --kafkazklist 10.240.139.35:2181 --kafkazkrootpath /kafka --dev eth2 參數說明: –zklist ZK 的 ip:port,可以寫多個 ZK ip:port,多個之間用英文逗號分隔 –zkrootpath 注意整理 zk 根節點與部署的時候 group_vars/all 下的” zk_rootdir”一致 –kafkazklist kafka 所在 zk,通常與–zklist 一樣 –kafkazkrootpath kafka 在 ZK 上的根節點,固定是/kafka –dev consumer 的網卡名稱 例如: ./binlogconsumermgn --zklist 10.85.10.51:2181,10.85.10.52:2181,10.85.10.53:2181 --zkrootpath /tdsqlzk --kafkazklist 10.85.10.51:2181,10.85.10.52:2181,10.85.10.53:2181 --kafkazkrootpath /kafka --dev ens38
#安裝 es (1) 查看 tdsql_hosts 文件(不能與 chitu 同一臺機器) [es] <—填入 es 的地址,數量固定為 1 es1 ansible_ssh_host=10.85.10.54 修改變量文件 vim group_vars/all es_mem: 8 <-----內存占用,如果這里寫 8 則至少占用 8*2=16G 內存 es_log_days: 7 <-----日志保留天數 es_base_path: /data/application/es-install/es <-----es 數據存放路徑 改為 es_mem: 2 es_log_days: 7 es_base_path: /mysql/data/es-install/es (2)執行安裝 es ansible-playbook -i tdsql_hosts es_single.yml (3)啟停命令(在 es 機器上操作): # stop ps -ef |grep elasticsearch | grep -v ‘grep'| awk ‘{print $2}' | xargs kill -9 ps -ef |grep logstash | grep -v ‘grep'| awk ‘{print $2}' | xargs kill -9 ps -ef |grep es-cleaner | grep -v ‘grep'| awk ‘{print $2}' | xargs kill -9 ps -ef |grep ‘node/bin/node' | grep -v ‘grep'| awk ‘{print $2}' | xargs kill -9 # start tdsql 用戶啟動: cd /data/application/es-install/es/master/tools ./start-elasticsearch.sh cd /data/application/es-install/es/data/tools ./start-elasticsearch.sh root 用戶啟動: cd /data/application/es-install/logstash/tools ./start-logstash.sh cd /data/application/es-install/es-cleaner ./start-es-cleaner.sh cd /data/application/es-install/kibana-5.6.4-linux-x86_64/bin/ nohup ./kibana & # 檢測是否正常啟動 ps -ef |grep elasticsearch | grep -v ‘grep' |wc -l 輸出為:4 <--------我的單個ES 個數為0 ps -ef |grep logstash | grep -v ‘grep' |wc -l 輸出為:2 ps -ef |grep es-cleaner | grep -v ‘grep' |wc -l 輸出為:1 ps -ef |grep ‘node/bin/node' | grep -v ‘grep' |wc -l 輸出為:1 (3)es 的驗證及相關配置 輸入 es IP 地址,打開 es 前臺頁面。 啟動 es 后,需要把實例詳情中的“網關審計數據是否入庫”打開,選擇“是”。 只有在打開這個開關后的日志才會入 es,為了可以定位問題,需要的話一定要盡早打開。
上述就是小編為大家分享的如何安裝部署TDSQL 了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。