溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MHA實(shí)現(xiàn)MySQL高可用集群架構(gòu)

發(fā)布時(shí)間:2020-08-16 19:16:28 來源:ITPUB博客 閱讀:264 作者:18141908802 欄目:MySQL數(shù)據(jù)庫

轉(zhuǎn)轉(zhuǎn)連接

https://www.cnblogs.com/tanxiaojun/p/10424699.html

MHA簡介

MHA(Master HighAvailability)目前在MySQL高可用方面是一個(gè)相對成熟的解決方案,它由日本DeNA公司youshimaton(現(xiàn)就職于Facebook公司)開發(fā),是一套優(yōu)秀的作為MySQL高可用性環(huán)境下故障切換和主從提升的高可用軟件。在MySQL故障切換過程中,MHA能做到在0~30秒之內(nèi)自動(dòng)完成數(shù)據(jù)庫的故障切換操作,并且在進(jìn)行故障切換的過程中,MHA能在最大程度上保證數(shù)據(jù)的一致性,以達(dá)到真正意義上的高可用。

MHA里有兩個(gè)角色一個(gè)是MHA Node(數(shù)據(jù)節(jié)點(diǎn))另一個(gè)是MHA Manager(管理節(jié)點(diǎn))。

MHA Manager可以單獨(dú)部署在一機(jī)器立的機(jī)器上管理多個(gè)master-slave集群,也可以部署在一臺(tái)slave節(jié)點(diǎn)上。MHA Node運(yùn)行在每臺(tái)MySQL服務(wù)器上,MHA Manager會(huì)定時(shí)探測集群中的master節(jié)點(diǎn),當(dāng)master出現(xiàn)故障時(shí),它可以自動(dòng)將最新數(shù)據(jù)的slave提升為新的master,然后將所有其他的slave重新指向新的master。整個(gè)故障轉(zhuǎn)移過程對應(yīng)用程序完全透明
在MHA自動(dòng)故障切換過程中,MHA試圖從宕機(jī)的主服務(wù)器上保存二進(jìn)制日志,最大程度的保證數(shù)據(jù)的不丟失,但這并不總是可行的。例如,如果主服務(wù)器硬件故障或無法通過ssh訪問,MHA沒法保存二進(jìn)制日志,只進(jìn)行故障轉(zhuǎn)移而丟失了最新的數(shù)據(jù)。使用MySQL 5.5的半同步復(fù)制,可以大大降低數(shù)據(jù)丟失的風(fēng)險(xiǎn)。MHA可以與半同步復(fù)制結(jié)合起來。如果只有一個(gè)slave已經(jīng)收到了最新的二進(jìn)制日志,MHA可以將最新的二進(jìn)制日志應(yīng)用于其他所有的slave服務(wù)器上,因此可以保證所有節(jié)點(diǎn)的數(shù)據(jù)一致性

異步復(fù)制(Asynchronous replication)

MySQL默認(rèn)的復(fù)制即是異步的,主庫在執(zhí)行完客戶端提交的事務(wù)后會(huì)立即將結(jié)果返給給客戶端,并不關(guān)心從庫是否已經(jīng)接收并處理,這樣就會(huì)有一個(gè)問題,主如果crash掉了,此時(shí)主上已經(jīng)提交的事務(wù)可能并沒有傳到從上,如果此時(shí),強(qiáng)行將從提升為主,可能導(dǎo)致新主上的數(shù)據(jù)不完整。

全同步復(fù)制(Fully synchronousreplication)

指當(dāng)主庫執(zhí)行完一個(gè)事務(wù),所有的從庫都執(zhí)行了該事務(wù)才返回給客戶端。因?yàn)樾枰却袕膸靾?zhí)行完該事務(wù)才能返回,所以全同步復(fù)制的性能必然會(huì)收到嚴(yán)重的影響。

半同步復(fù)制(Semisynchronous replication)

介于異步復(fù)制和全同步復(fù)制之間,主庫在執(zhí)行完客戶端提交的事務(wù)后不是立刻返回給客戶端,而是等待至少一個(gè)從庫接收到并寫到relay log中才返回給客戶端。相對于異步復(fù)制,半同步復(fù)制提高了數(shù)據(jù)的安全性,同時(shí)它也造成了一定程度的延遲,這個(gè)延遲最少是一個(gè)TCP/IP往返的時(shí)間。所以,半同步復(fù)制最好在低延時(shí)的網(wǎng)絡(luò)中使用。
下面來看看半同步復(fù)制的原理圖:
MHA實(shí)現(xiàn)MySQL高可用集群架構(gòu)

總結(jié):異步與半同步異同

默認(rèn)情況下MySQL的復(fù)制是異步的,Master上所有的更新操作寫入Binlog之后并不確保所有的更新都被復(fù)制到Slave之上。異步操作雖然效率高,但是在Master/Slave出現(xiàn)問題的時(shí)候,存在很高數(shù)據(jù)不同步的風(fēng)險(xiǎn),甚至可能丟失數(shù)據(jù)。
MySQL5.5引入半同步復(fù)制功能的目的是為了保證在master出問題的時(shí)候,至少有一臺(tái)Slave的數(shù)據(jù)是完整的。在超時(shí)的情況下也可以臨時(shí)轉(zhuǎn)入異步復(fù)制,保障業(yè)務(wù)的正常使用,直到一臺(tái)salve追趕上之后,繼續(xù)切換到半同步模式。

工作原理

相較于其它HA軟件,MHA的目的在于維持MySQL Replication中Master庫的高可用性,其最大特點(diǎn)是可以修復(fù)多個(gè)Slave之間的差異日志,最終使所有Slave保持?jǐn)?shù)據(jù)一致,然后從中選擇一個(gè)充當(dāng)新的Master,并將其它Slave指向它。

-從宕機(jī)崩潰的master保存二進(jìn)制日志事件(binlogevents)。  -識(shí)別含有最新更新的slave。  -應(yīng)用差異的中繼日志(relay log)到其它slave。  -應(yīng)用從master保存的二進(jìn)制日志事件(binlogevents)。  -提升一個(gè)slave為新master。  -使其它的slave連接新的master進(jìn)行復(fù)制。

目前MHA主要支持一主多從的架構(gòu),要搭建MHA,要求一個(gè)復(fù)制集群中必須最少有三臺(tái)數(shù)據(jù)庫服務(wù)器,一主二從,即一臺(tái)充當(dāng)master,一臺(tái)充當(dāng)備用master,另外一臺(tái)充當(dāng)從庫,因?yàn)橹辽傩枰_(tái)服務(wù)器。
相關(guān)軟件包

  1. MHA監(jiān)控服務(wù)器安裝:mha4mysql-manager-0.55-1.el5.noarch,mha4mysql-node-0.54-1.el5.noarch
  2. 其他主從集群服務(wù)器安裝:mha4mysql-node-0.54-1.el5.noarch

MHA軟件包官網(wǎng)地址:  https://code.google.com/archive/p/mysql-master-ha/
使用到如下包:

mha4mysql-manager-0.55-1.el5.noarchmha4mysql-node-0.54-1.el5.noarch

二、構(gòu)建集群架構(gòu)基礎(chǔ)環(huán)境

實(shí)現(xiàn)環(huán)境:

角色 IP地址 主機(jī)名 Server Id 類型 OS
Manager 192.168.64.37 manager
管理節(jié)點(diǎn) Centos7.2x86_64
master 192.168.64.7 master1 1 主mysql Centos7.2x86_64
Candidate master 192.168.64.17 master2 2 從mysql Centos7.2x86_64
slave 192.168.64.27 slave 3 從mysql Centos7.2x86_64

其中master對外提供寫服務(wù),備選master(實(shí)際的slave,主機(jī)名master2)提供讀服務(wù),slave也提供相關(guān)的讀服務(wù),一旦master宕機(jī),將會(huì)把備選master提升為新的master,slave指向新的master,manager作為管理服務(wù)器。

1、 在配置好所有主機(jī)IP地址后檢查selinux,firewalld設(shè)置,關(guān)閉所有主機(jī)selinux ,firewalld 服務(wù)以方便后期主從同步不出錯(cuò)

vim /etc/sysconfig/selinux
SELINUX=disabled   本行替換為
systemctl stop firewalld   關(guān)閉防火墻

2.同步服務(wù)器時(shí)間

vim /etc/chrony.conf
server 192.168.64.7 iburst   master2 slave配置與master1時(shí)間同步

3、
在四臺(tái)主機(jī)上都配置epel源
官網(wǎng)下載地址:點(diǎn)擊打開鏈接 wget  https://mirrors.ustc.edu.cn/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
4.在四臺(tái)主機(jī)上建立ssh無交互登錄環(huán)境

[root@manager ~]#  ssh-keygen -t rsa[root@manager ~]#  ssh-copy-id -i id_rsa.pub 192.168.64.37[root@manager ~]#  scp authorized_keys id_rsa 192.168.64.17:/root/.ssh/[root@manager ~]#  scp authorized_keys id_rsa 192.168.64.27:/root/.ssh/[root@manager ~]#   scp authorized_keys id_rsa 192.168.64.7:/root/.ssh/測試ssh登錄面密鑰
[root@master ~]# ssh root@192.168.64.37   其它主機(jī)可以分別測試下

三、 配置MySQL的主從復(fù)制

1、在主從節(jié)點(diǎn)安裝node節(jié)點(diǎn)包(master1 master2,slave)

[root@master ~]# lsanaconda-ks.cfg  Downloads                             original-ks.cfg  reset.sh   VideosDesktop          mha4mysql-node-0.54-0.el6.noarch.rpm  Pictures         reset.sqlDocuments        Music                                 Public           Template[root@master ~]# l  yum install mha*

2、修改my.cnf文件,配置主從同步
注意:若主MYSQL服務(wù)器已經(jīng)存在,只是后期才搭建從MYSQL服務(wù)器,在置配數(shù)據(jù)同步前應(yīng)先將主MYSQL服務(wù)器的要同步的數(shù)據(jù)庫拷貝到從MYSQL服務(wù)器上(如先在主MYSQL上備份數(shù)據(jù)庫,再用備份在從MYSQL服務(wù)器上恢復(fù))
(1.)master1的主機(jī)配置:

innodb_file_per_table
log_bin
read_only
server_id=0
skip_name_resolve=1

(2.)master2的主機(jī)配置:

innodb_file_per_table
server_id=2
skip_name_resolve=1
read_only
relay_log_purge=0
log_bin

(3)slave的主機(jī)配置:

innodb_file_per_table
server_id=3
skip_name_resolve=1
read_only
relay_log_purge=0
log_bin

注意:重啟所有主機(jī)的mariadb服務(wù)?。。?/p>

(3.)創(chuàng)建用于主從復(fù)制的賬號(hào)“mharep”,在(master1、master2)主機(jī)上創(chuàng)建即可,創(chuàng)建MHA管理賬號(hào)“manager”在所有mysql服務(wù)器上都要?jiǎng)?chuàng)建。
master1、master2主機(jī)上的配置:

mysql>GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'192.168.64.%' IDENTIFIED BY 'centos';mysql> GRANT ALL ON *.* TO 'mhauser'@'192.168.64.%' IDENTIFIED BY 'centos';

slave主機(jī)上的配置:

mysql> GRANT ALL ON *.* TO 'mhauser'@'192.168.64.%' IDENTIFIED BY 'centos';

開始創(chuàng)建主從復(fù)制:

查看master1的節(jié)點(diǎn):

MariaDB [(none)]> show master logs;
+--------------------+-----------+| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |       502 || mariadb-bin.000002 |       487 |
| mariadb-bin.000003 |       504 || mariadb-bin.000004 |       245 |
+--------------------+-----------+
4 rows in set (0.04 sec)

master2主機(jī)上的配置:

創(chuàng)建主從復(fù)制,并開啟slave功能

mysql>CHANGE MASTER TO MASTER_HOST='192.168.64.7',MASTER_USER='repluser' ,MASTER_PASSWORD='centos',MASTER_LOG_FILE='mariadb-bin.000004',MASTER_LOG_POS=245;mysql> start slave;

查看master2主機(jī)從的狀態(tài),以下兩個(gè)值必須為yes,代表從服務(wù)器能正常連接主服務(wù)器

Slave_IO_Running:Yes  Slave_SQL_Running:Yes

slave主機(jī)上的配置:

創(chuàng)建主從復(fù)制,并開啟salve功能

mysql>CHANGE MASTER TO MASTER_HOST='192.168.64.7',MASTER_USER='repluser' ,MASTER_PASSWORD='centos',MASTER_LOG_FILE='mariadb-bin.000004',MASTER_LOG_POS=245;mysql> start slave;

查看slave主機(jī)從的狀態(tài),以下兩個(gè)值必須為yes,代表從服務(wù)器能正常連接主服務(wù)器

Slave_IO_Running:Yes  Slave_SQL_Running:Yes
MariaDB [(none)]> show slave status\G;*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.64.7                  Master_User: repluser                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: mariadb-bin.000004          Read_Master_Log_Pos: 245               Relay_Log_File: mariadb-relay-bin.000002                Relay_Log_Pos: 531        Relay_Master_Log_File: mariadb-bin.000004             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: 245              Relay_Log_Space: 827              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: 0Master_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: 11 row in set (0.00 sec)
ERROR: No query specified

注意:

第一條grant命令是創(chuàng)建一個(gè)用于主從復(fù)制的帳號(hào)repluser,在master1和master2的主機(jī)上創(chuàng)建即可。

第二條grant命令是創(chuàng)建MHA管理賬號(hào)manager,所有mysql服務(wù)器上都需要?jiǎng)?chuàng)建。MHA會(huì)在配置文件里要求能遠(yuǎn)程登錄到數(shù)據(jù)庫,所以要進(jìn)行必要的賦權(quán)。

四、安裝配置mysql-MHA

mha包括manager節(jié)點(diǎn)和data節(jié)點(diǎn),data節(jié)點(diǎn)包括原有的MySQL復(fù)制結(jié)構(gòu)中的主機(jī),至少3臺(tái),即1主2從,當(dāng)masterfailover后,還能保證主從結(jié)構(gòu);主從復(fù)制集群只需安裝node包。

manager server:運(yùn)行監(jiān)控腳本,負(fù)責(zé)monitoring和 auto-failover;mha manager節(jié)點(diǎn)需要安裝node包和manager包。
1、在manager主機(jī)上需要安裝( mha4mysql-manager-0.55-0.el6.noarch.rpm和 mha4mysql-node-0.54-0.el6.noarch.rpm)兩個(gè)操作管理節(jié)點(diǎn), 在3臺(tái)數(shù)據(jù)庫主機(jī)上只需要安裝MHA的node節(jié)點(diǎn)即可。

[root@manager ~]# ls192.168.64.17    cobbler.ks            mha4mysql-manager-0.55-0.el6.noarch.rpm192.168.64.27    ks-post.log           mha4mysql-node-0.54-0.el6.noarch.rpm192.168.64.7     ks-post-nochroot.log  original-ks.cfganaconda-ks.cfg  ks-pre.log[root@manager ~]#  yum install mha*

其他三臺(tái)數(shù)據(jù)庫節(jié)點(diǎn)需要安裝MHA的node節(jié)點(diǎn)(過程略)?。。?/p>

  1. 配置MHA

與絕大多數(shù)Linux應(yīng)用程序類似,MHA的正確使用依賴于合理的配置文件。MHA的配置文件與mysql的my.cnf文件配置相似,采取的是param=value的方式來配置,配置文件位于管理節(jié)點(diǎn),通常包括每一個(gè)mysql server的主機(jī)名,mysql用戶名,密碼,工作目錄等等。

(1.)編輯/etc/masterha/app1.conf,內(nèi)容如下:

[root@manager ~]# vim /etc/mastermha/app1.cnf [server default]user=mhauserpassword=centosmanager_workdir=/data/mastermha/app1/manager_log=/data/mastermha/app1/manager.logremote_workdir=/data/mastermha/app1/ssh_user=rootrepl_user=repluserrepl_password=centosping_interval=1[server1]hostname=192.168.64.7candidate_master=1[server2]hostname=192.168.64.17candidate_master=1[server3]hostname=192.168.64.27candidate_master=1

配置項(xiàng)的解釋:

manager_workdir=/masterha/app1 //設(shè)置manager的工作目錄  
manager_log=/masterha/app1/manager.log //設(shè)置manager的日志  
user=manager//設(shè)置監(jiān)控用戶manager  
password=123456  //監(jiān)控用戶manager的密碼  
ssh_user=root  //ssh連接用戶  
repl_user=mharep  //主從復(fù)制用戶  
repl_password=123.abc //主從復(fù)制用戶密碼  
ping_interval=1   //設(shè)置監(jiān)控主庫,發(fā)送ping包的時(shí)間間隔,默認(rèn)是3秒,嘗試三次沒有回應(yīng)的時(shí)候自動(dòng)進(jìn)行railover  
master_binlog_dir=/usr/local/mysql/data   //設(shè)置master 保存binlog的位置,以便MHA可以找到master的日志,我這里的也就是mysql的數(shù)據(jù)目錄  
candidate_master=1//設(shè)置為候選master,如果設(shè)置該參數(shù)以后,發(fā)生主從切換以后將會(huì)將此從庫提升為主庫。

SSH 有效性驗(yàn)證:

[root@manager ~]# masterha_check_ssh --conf=/etc/mastermha/app1.cnf Sun Apr 22 06:36:33 2018 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
/etc/masterha/app1.cnf:No such file or directory
 at /usr/share/perl5/vendor_perl/MHA/SSHCheck.pm line 148.[root@manager ~]# masterha_check_ssh masterha_check_ssh
[root@manager ~]# masterha_check_ssh --conf=/etc/mastermha/app1.cnf Sun Apr 22 06:37:13 2018 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Sun Apr 22 06:37:13 2018 - [info] Reading application default configurations from /etc/mastermha/app1.cnf..
Sun Apr 22 06:37:13 2018 - [info] Reading server configurations from /etc/mastermha/app1.cnf..
Sun Apr 22 06:37:13 2018 - [info] Starting SSH connection tests..
Sun Apr 22 06:37:18 2018 - [debug] 
Sun Apr 22 06:37:14 2018 - [debug]  Connecting via SSH from root@192.168.64.27(192.168.64.27:22) to root@192.168.64.7(192.168.64.7:22)..
Sun Apr 22 06:37:16 2018 - [debug]   ok.
Sun Apr 22 06:37:16 2018 - [debug]  Connecting via SSH from root@192.168.64.27(192.168.64.27:22) to root@192.168.64.17(192.168.64.17:22)..
Sun Apr 22 06:37:17 2018 - [debug]   ok.
Sun Apr 22 06:37:18 2018 - [debug] 
Sun Apr 22 06:37:14 2018 - [debug]  Connecting via SSH from root@192.168.64.17(192.168.64.17:22) to root@192.168.64.7(192.168.64.7:22)..
Sun Apr 22 06:37:16 2018 - [debug]   ok.
Sun Apr 22 06:37:16 2018 - [debug]  Connecting via SSH from root@192.168.64.17(192.168.64.17:22) to root@192.168.64.27(192.168.64.27:22)..
Sun Apr 22 06:37:17 2018 - [debug]   ok.
Sun Apr 22 06:37:18 2018 - [debug] 
Sun Apr 22 06:37:13 2018 - [debug]  Connecting via SSH from root@192.168.64.7(192.168.64.7:22) to root@192.168.64.17(192.168.64.17:22)..
Sun Apr 22 06:37:17 2018 - [debug]   ok.
Sun Apr 22 06:37:17 2018 - [debug]  Connecting via SSH from root@192.168.64.7(192.168.64.7:22) to root@192.168.64.27(192.168.64.27:22)..
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host isSHA256:080GPU/VjQmyb/Ije4lASHgZDXJv5E/QOqAcAv0wfV0.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /root/.ssh/known_hosts:1Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
Sun Apr 22 06:37:18 2018 - [debug]   ok.
Sun Apr 22 06:37:18 2018 - [info] All SSH connection tests passed successfully.

集群復(fù)制的有效性驗(yàn)證:

注意:mysql數(shù)據(jù)庫必須都啟動(dòng)

[root@manager ~]# masterha_check_repl --conf=/etc/mastermha/app1.cnf

注意:驗(yàn)證成功的話會(huì)自動(dòng)識(shí)別出所有服務(wù)器和主從狀況?。?!

在驗(yàn)證時(shí),若遇到這個(gè)錯(cuò)誤:Can't exec "mysqlbinlog" ......

解決方法是在所有服務(wù)器上執(zhí)行:

[css] view plain copy
ln -s /usr/local/mysql/bin/* /usr/local/bin/

啟動(dòng) manager:

[root@manager ~]# masterha_manager --conf=/etc/mastermha/app1.cnf Sun Apr 22 06:39:35 2018 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Sun Apr 22 06:39:35 2018 - [info] Reading application default configurations from /etc/mastermha/app1.cnf..
Sun Apr 22 06:39:35 2018 - [info] Reading server configurations from /etc/mastermha/app1.cnf..

注意:在應(yīng)用Unix/Linux時(shí),我們一般想讓某個(gè)程序在后臺(tái)運(yùn)行,于是我們將常會(huì)用&在程序結(jié)尾來讓程序自動(dòng)運(yùn)行。比如我們要運(yùn)行mysql在后臺(tái): /usr/local/mysql/bin/mysqld_safe –user=mysql&??墒怯泻芏喑绦虿⒉幌雖ysqld一樣,這樣我們就需要nohup命令,

五、模擬故障,檢測狀態(tài)轉(zhuǎn)移

1、停掉master1 的mariadb服務(wù)

[root@master ~]#  systemctl stop mariadb

(2.)查看 MHA 日志
上面的配置文件中指定了日志位置為/data /masterha/app1/manager.log

[root@manager ~]# cat/masterha/app1/manager.log

從日志信息中可以看到master failover 已經(jīng)成功了,并可以看出故障轉(zhuǎn)移的大體流程

(3)檢查 slave 的復(fù)制
登錄 slave(192.168.64.27)的Mysql,查看 slave 狀態(tài)

mysql> show slave status\G;

可以看到master 的 IP 現(xiàn)在為 192.168.64.17,已經(jīng)切換到和192.168.64.27同步了,本來是和192.168.64.7同步的,說明 MHA 已經(jīng)把Candicatemaster(master2)提升為了新的master,IO線程和SQL線程也正確運(yùn)行,MHA 搭建成功!!!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI