0

0

MySQL备份与恢复之MySQL 延时备份_MySQL

php中文网

php中文网

发布时间:2016-06-01 13:27:00

|

890人浏览过

|

来源于php中文网

原创

bitsCN.com

一 为什么需要延时备份

在上一篇文章中,我们讲到mysql备份与恢复之percona-xtrabackup实现增量备份及恢复,percona-xtrabackup是一个优秀的用于增量备份的工具。今天我们讲到的延时备份也是使用他们的产品。

 

以前在MySQL AB复制一文中提到了AB复制。我们首先回顾下MySQL复制的相关要点。AB复制又称主从复制,实现的是数据同步。经过以下步骤:

 

1)主服务器把数据更改记录到二进制日志中,这个操作叫做二进制日志事件;

2)从服务器把主服务器的二进制日志事件拷贝到自己的中继日志(relay log)中;

3)从服务器执行中继日志中的事件,把更改应用到自己的数据上。

 

在生产中,我们在使用 mysql AB 复制技术不但可以起到数据库层面负载均衡的能力,还可以起到备份数据的功能,但有的时候我们可能由于不小心误操作导致数据被删除,这这个时候 slave服务器上的数据也会同时被删除,如果我们能够能是的其中的一台 slave 延时备份的话, 这样就可以从 slave服务器上找回被误删的数据了。

 

从服务器到主服务器中拷贝二进制日志文件,如果在并发量高,网络延时严重的情况下,会对主服务器造成相当大的压力,负载高,必定会出现很多问题,比如访问延迟,IO瓶颈,网络拥塞等等。服务器压力过大是我们都不愿看到的情况,那有没有方案缓解这种情况呢?有,这就是本文讲到的延时备份。延时备份通过第三方工具,将检查同步和真正同步的时间控制在一定的范围内,而不是主服务器数据发生变化,从服务器立即去同步二进制事件到自己的中继日志中,这样的话可以大大减轻主服务器的压力,并且基于AB复制的优点,可以达到备份数据的目的。

 

好了,看下延时备份的示意图。

 

二 延时备份示意图

MySQL备份与恢复之MySQL

 

三 延时备份模拟

 

网络拓扑图

MySQL备份与恢复之MySQL

实验环境简介

serv01:主服务器 192.168.1.11serv01.host.com

serv08:及时同步服务器 192.168.1.18serv01.host.com

serv09:延时同步服务器 192.168.1.19serv08.host.com

操作系统版本

Morisot
Morisot

免提示词AI图片生成器,10秒生成十几张

下载

RHEL Server6.1 64位系统

使用到的软件包版本

mysql-5.5.29-linux2.6-x86_64.tar.gz

percona-toolkit-2.1.7-1.noarch.rpm

 

第一步,搭建环境。修改配置文件,注意每台的server-id不一致;

[root@serv01 ~]# cat /etc/my.cnf | grep server-idserver-id = 1#server-id = 2[root@serv01 ~]# /etc/init.d/mysqld startStarting MySQL SUCCESS! [root@serv08 ~]# cat /etc/my.cnf | grep server-idserver-id = 2#server-id = 2[root@serv08 ~]# /etc/init.d/mysqld startStarting MySQL SUCCESS! [root@serv09 ~]# cat /etc/my.cnf | grep server-idserver-id = 3#server-id = 2[root@serv09 ~]# /etc/init.d/mysqld startStarting MySQL SUCCESS!

第二步,serv01serv08 serv09清空日志

serv01mysql> show binary logs;+------------------+-----------+| Log_name         | File_size |+------------------+-----------+| mysql-bin.000001 |       683 |+------------------+-----------+1 row in set (0.01 sec)mysql> reset master;Query OK, 0 rows affected (0.01 sec)mysql> show binary logs;+------------------+-----------+| Log_name         | File_size |+------------------+-----------+| mysql-bin.000001 |       107 |+------------------+-----------+1 row in set (0.00 sec)serv08mysql> reset master;Query OK, 0 rows affected (0.02 sec)mysql> show binary logs;+------------------+-----------+| Log_name         | File_size |+------------------+-----------+| mysql-bin.000001 |       107 |+------------------+-----------+1 row in set (0.00 sec)serv09mysql> show binary logs;+------------------+-----------+| Log_name         | File_size |+------------------+-----------+| mysql-bin.000001 |       107 |+------------------+-----------+1 row in set (0.00 sec)mysql> reset master;Query OK, 0 rows affected (0.00 sec)mysql> show binary logs;+------------------+-----------+| Log_name         | File_size |+------------------+-----------+| mysql-bin.000001 |       107 |+------------------+-----------+1 row in set (0.00 sec)

第三步,主服务器serv01创建授权用户

mysql> grant replication client, replication slave on *.* to 'larry'@'192.168.1.%' identified by 'larry';

 

第四步,serv08修改master设置,开启slave,查看slave状态

mysql> change master to    -> master_host='192.168.1.11',    -> master_user='larry',    -> master_password='larry',    -> master_port=3306,    -> master_log_file='mysql-bin.000001',    -> master_log_pos=107;Query OK, 0 rows affected (0.03 sec)mysql> start slave;Query OK, 0 rows affected (0.00 sec)mysql> show slave status G;*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.1.11                  Master_User: larry                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: mysql-bin.000001          Read_Master_Log_Pos: 107               Relay_Log_File: serv08-relay-bin.000002                Relay_Log_Pos: 253        Relay_Master_Log_File: mysql-bin.000001             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: 107              Relay_Log_Space: 410              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

第五步,serv09延时服务器修改master状态,开启slave,查看slave状态

mysql> change master to master_host='192.168.1.11', master_user='larry', master_password='larry', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=107;Query OK, 0 rows affected (0.02 sec)mysql> start slave;Query OK, 0 rows affected (0.01 sec)mysql> show slave status G;*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.1.11                  Master_User: larry                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: mysql-bin.000001          Read_Master_Log_Pos: 107               Relay_Log_File: serv09-relay-bin.000002                Relay_Log_Pos: 253        Relay_Master_Log_File: mysql-bin.000001             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: 107              Relay_Log_Space: 410              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

第六步,在没有使用延时服务器时,serv01创建测试数据库,可以看到同步服务器serv08和延时服务器serv09已经同步了

serv01mysql> create database justdb;Query OK, 1 row affected (0.01 sec)mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || crm                || justdb             || larry              || larrydb            || mysql              || performance_schema || test               |+--------------------+8 rows in set (0.00 sec)serv08mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || justdb             || larrydb            || mysql              || performance_schema || test               |+--------------------+6 rows in set (0.03 sec)serv09mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || justdb             || larry              || larrydb            || mysql              || performance_schema || test               |+--------------------+7 rows in set (0.00 sec)

第七步,拷贝percona-toolkit-2.1.7-1.noarch.rpm

[root@larrywen ule-mysql]# scp percona-toolkit-2.1.7-1.noarch.rpm 192.168.1.11:/optroot@192.168.1.11's password: percona-toolkit-2.1.7-1.noarch.rpm                       100% 1767KB   1.7MB/s   00:00 

第八步,主服务器中通过yum安装percona-toolkit-2.1.7-1.noarch.rpm

[root@serv01 opt]# yum install percona-toolkit-2.1.7-1.noarch.rpm -y

第九步,使用pt-slave-delay工具进行延时设置。可以先查看帮助。

[root@serv01 opt]# pt-slave-delay --helppt-slave-delay starts and stops a slave server as needed to make it lag behindthe master.  The SLAVE-HOST and MASTER-HOST use DSN syntax, and values arecopied from the SLAVE-HOST to the MASTER-HOST if omitted.  For more details,please use the --help option, or try 'perldoc /usr/bin/pt-slave-delay' forcomplete documentation.Usage: pt-slave-delay [OPTION...] SLAVE-HOST [MASTER-HOST]Options:  --ask-pass            Prompt for a password when connecting to MySQL  --charset=s       -A  Default character set  --config=A            Read this comma-separated list of config files; if                        specified, this must be the first option on the command                        line  --[no]continue        Continue replication normally on exit (default yes)  --daemonize           Fork to the background and detach from the shell  --database=s      -D  The database to use for the connection  --defaults-file=s -F  Only read mysql options from the given file  --delay=m             How far the slave should lag its master (default 1h).                        Optional suffix s=seconds, m=minutes, h=hours, d=days;                        if no suffix, s is used.  --help                Show help and exit  --host=s          -h  Connect to host  --interval=m          How frequently pt-slave-delay should check whether the                        slave needs to be started or stopped (default 1m).                        Optional suffix s=seconds, m=minutes, h=hours, d=days;                        if no suffix, s is used.  --log=s               Print all output to this file when daemonized  --password=s      -p  Password to use when connecting  --pid=s               Create the given PID file when daemonized  --port=i          -P  Port number to use for connection  --quiet           -q  Don't print informational messages about operation  --run-time=m          How long pt-slave-delay should run before exiting.                        Optional suffix s=seconds, m=minutes, h=hours, d=days;                        if no suffix, s is used.  --set-vars=s          Set these MySQL variables (default wait_timeout=10000)  --socket=s        -S  Socket file to use for connection  --use-master          Get binlog positions from master, not slave  --user=s          -u  User for login if not current user  --version             Show version and exit  --version-check=s     Send program versions to Percona and print suggested                        upgrades and problems (default off)Option types: s=string, i=integer, f=float, h/H/a/A=comma-separated list, d=DSN, z=size, m=timeRules:  This tool accepts additional command-line arguments. Refer to the SYNOPSIS and usage information for details.DSN syntax is key=value[,key=value...]  Allowable DSN keys:  KEY  COPY  MEANING  ===  ====  =============================================  A    yes   Default character set  D    yes   Default database  F    yes   Only read default options from the given file  P    yes   Port number to use for connection  S    yes   Socket file to use for connection  h    yes   Connect to host  p    yes   Password to use when connecting  u    yes   User for login if not current user  If the DSN is a bareword, the word is treated as the 'h' key.Options and values after processing arguments:  --ask-pass            FALSE  --charset             (No value)  --config              /etc/percona-toolkit/percona-toolkit.conf,/etc/percona-toolkit/pt-slave-delay.conf,/root/.percona-toolkit.conf,/root/.pt-slave-delay.conf  --continue            TRUE  --daemonize           FALSE  --database            (No value)  --defaults-file       (No value)  --delay               3600  --help                TRUE  --host                (No value)  --interval            60  --log                 (No value)  --password            (No value)  --pid                 (No value)  --port                (No value)  --quiet               FALSE  --run-time            (No value)  --set-vars            wait_timeout=10000  --socket              (No value)  --use-master          FALSE  --user                (No value)  --version             FALSE  --version-check       off

第十步,serv09延时服务器中创建授权用户

mysql> grant all on *.* to 'rep'@'192.168.1.%' identified by 'larry';Query OK, 0 rows affected (0.00 sec)

 

第十一步,实现功能。

[root@serv01 ~]# pt-slave-delay --user='rep' --password='larry' --delay=3m --interval=20s --run-time=30m 192.168.1.192013-10-06T19:43:30 slave running 0 seconds behind2013-10-06T19:43:30 STOP SLAVE until 2013-10-06T19:46:30 at master position mysql-bin.000001/199命令解释--user='rep':延时服务器中授权用户的用户名,这里设置为rep--password='larry':延时服务器中授权用户的密码,这里设置为larry--delay=3m:延时同步的时间,这里设置为3分钟--interval=20s:检查同步的时间,这里设置为20s--run-time=30m:pt-slave-delay的运行时间,这里设置为30分钟192.168.1.19:延时服务器的IP地址

第十二步,测试,主服务器serv01创建测试数据库,可以发现同步服务器立马更新,而延时同步服务器要等3分钟之后才更新

serv01mysql> use justdb;Database changedmysql> create table test(id int);Query OK, 0 rows affected (0.01 sec)mysql> insert into test values(1);Query OK, 1 row affected (0.00 sec)serv08  mysql> select * from justdb.test;+------+| id   |+------+|    1 |+------+1 row in set (0.00 sec)serv09mysql> select * from justdb.test;ERROR 1146 (42S02): Table 'justdb.test' doesn't exist三分钟过后查看延时服务器已经同步成功[root@serv01 ~]# pt-slave-delay --user='rep' --password='larry' --delay=3m --interval=20s --run-time=30m 192.168.1.192013-10-06T19:43:30 slave running 0 seconds behind2013-10-06T19:43:30 STOP SLAVE until 2013-10-06T19:46:30 at master position mysql-bin.000001/1992013-10-06T19:43:50 slave stopped at master position mysql-bin.000001/1992013-10-06T19:44:10 slave stopped at master position mysql-bin.000001/1992013-10-06T19:44:30 slave stopped at master position mysql-bin.000001/4922013-10-06T19:44:50 slave stopped at master position mysql-bin.000001/4922013-10-06T19:45:10 slave stopped at master position mysql-bin.000001/4922013-10-06T19:45:30 slave stopped at master position mysql-bin.000001/4922013-10-06T19:45:50 slave stopped at master position mysql-bin.000001/4922013-10-06T19:46:10 slave stopped at master position mysql-bin.000001/4922013-10-06T19:46:30 no new binlog events2013-10-06T19:46:50 slave stopped at master position mysql-bin.000001/4922013-10-06T19:47:10 slave stopped at master position mysql-bin.000001/4922013-10-06T19:47:30 START SLAVE until master 2013-10-06T19:44:30 mysql-bin.000001/4922013-10-06T19:47:50 slave running 0 seconds behind2013-10-06T19:47:50 STOP SLAVE until 2013-10-06T19:50:50 at master position mysql-bin.000001/4922013-10-06T19:48:10 slave stopped at master position mysql-bin.000001/4922013-10-06T19:48:30 slave stopped at master position mysql-bin.000001/4922013-10-06T19:48:50 slave stopped at master position mysql-bin.000001/4922013-10-06T19:49:10 slave stopped at master position mysql-bin.000001/4922013-10-06T19:49:30 slave stopped at master position mysql-bin.000001/4922013-10-06T19:49:50 slave stopped at master position mysql-bin.000001/4922013-10-06T19:50:10 slave stopped at master position mysql-bin.000001/4922013-10-06T19:50:30 slave stopped at master position mysql-bin.000001/4922013-10-06T19:50:50 no new binlog events2013-10-06T19:51:10 slave stopped at master position mysql-bin.000001/4922013-10-06T19:51:30 slave stopped at master position mysql-bin.000001/4922013-10-06T19:51:50 slave stopped at master position mysql-bin.000001/4922013-10-06T19:52:10 slave stopped at master position mysql-bin.000001/4922013-10-06T19:52:30 slave stopped at master position mysql-bin.000001/4922013-10-06T19:52:50 slave stopped at master position mysql-bin.000001/4922013-10-06T19:53:10 slave stopped at master position mysql-bin.000001/4922013-10-06T19:53:30 slave stopped at master position mysql-bin.000001/4922013-10-06T19:53:50 slave stopped at master position mysql-bin.000001/4922013-10-06T19:54:10 no new binlog events2013-10-06T19:54:30 slave stopped at master position mysql-bin.000001/4922013-10-06T19:54:50 slave stopped at master position mysql-bin.000001/4922013-10-06T19:55:10 slave stopped at master position mysql-bin.000001/4922013-10-06T19:55:30 slave stopped at master position mysql-bin.000001/4922013-10-06T19:55:50 slave stopped at master position mysql-bin.000001/4922013-10-06T19:56:10 slave stopped at master position mysql-bin.000001/4922013-10-06T19:56:30 slave stopped at master position mysql-bin.000001/4922013-10-06T19:56:50 slave stopped at master position mysql-bin.000001/4922013-10-06T19:57:10 slave stopped at master position mysql-bin.000001/4922013-10-06T19:57:30 no new binlog events2013-10-06T19:57:50 slave stopped at master position mysql-bin.000001/4922013-10-06T19:58:10 slave stopped at master position mysql-bin.000001/4922013-10-06T19:58:30 slave stopped at master position mysql-bin.000001/4922013-10-06T19:58:50 slave stopped at master position mysql-bin.000001/4922013-10-06T19:59:10 slave stopped at master position mysql-bin.000001/4922013-10-06T19:59:30 slave stopped at master position mysql-bin.000001/4922013-10-06T19:59:50 slave stopped at master position mysql-bin.000001/4922013-10-06T20:00:10 slave stopped at master position mysql-bin.000001/4922013-10-06T20:00:30 slave stopped at master position mysql-bin.000001/4922013-10-06T20:00:50 no new binlog events2013-10-06T20:01:10 slave stopped at master position mysql-bin.000001/4922013-10-06T20:01:30 slave stopped at master position mysql-bin.000001/4922013-10-06T20:01:50 slave stopped at master position mysql-bin.000001/4922013-10-06T20:02:10 slave stopped at master position mysql-bin.000001/4922013-10-06T20:02:30 slave stopped at master position mysql-bin.000001/4922013-10-06T20:02:50 slave stopped at master position mysql-bin.000001/4922013-10-06T20:03:10 slave stopped at master position mysql-bin.000001/4922013-10-06T20:03:30 slave stopped at master position mysql-bin.000001/4922013-10-06T20:03:50 slave stopped at master position mysql-bin.000001/4922013-10-06T20:04:10 no new binlog events2013-10-06T20:04:30 slave stopped at master position mysql-bin.000001/4922013-10-06T20:04:50 slave stopped at master position mysql-bin.000001/4922013-10-06T20:05:10 slave stopped at master position mysql-bin.000001/4922013-10-06T20:05:30 slave stopped at master position mysql-bin.000001/4922013-10-06T20:05:50 slave stopped at master position mysql-bin.000001/4922013-10-06T20:06:10 slave stopped at master position mysql-bin.000001/4922013-10-06T20:06:30 slave stopped at master position mysql-bin.000001/4922013-10-06T20:06:50 slave stopped at master position mysql-bin.000001/4922013-10-06T20:07:10 slave stopped at master position mysql-bin.000001/4922013-10-06T20:07:30 no new binlog events2013-10-06T20:07:50 slave stopped at master position mysql-bin.000001/4922013-10-06T20:08:10 slave stopped at master position mysql-bin.000001/4922013-10-06T20:08:30 slave stopped at master position mysql-bin.000001/4922013-10-06T20:08:50 slave stopped at master position mysql-bin.000001/4922013-10-06T20:09:10 slave stopped at master position mysql-bin.000001/4922013-10-06T20:09:30 slave stopped at master position mysql-bin.000001/4922013-10-06T20:09:50 slave stopped at master position mysql-bin.000001/4922013-10-06T20:10:10 slave stopped at master position mysql-bin.000001/4922013-10-06T20:10:30 slave stopped at master position mysql-bin.000001/4922013-10-06T20:10:50 no new binlog events2013-10-06T20:11:10 slave stopped at master position mysql-bin.000001/4922013-10-06T20:11:30 slave stopped at master position mysql-bin.000001/4922013-10-06T20:11:50 slave stopped at master position mysql-bin.000001/4922013-10-06T20:12:10 slave stopped at master position mysql-bin.000001/4922013-10-06T20:12:30 slave stopped at master position mysql-bin.000001/4922013-10-06T20:12:50 slave stopped at master position mysql-bin.000001/4922013-10-06T20:13:10 slave stopped at master position mysql-bin.000001/4922013-10-06T20:13:30 slave stopped at master position mysql-bin.000001/4922013-10-06T20:13:30 Setting slave to run normallymysql> select * from justdb.test;+------+| id   |+------+|    1 |+------+1 row in set (0.00 sec)

四 附延时备份脚本

 

#!/bin/bash## chkconfig: - 88 12# description: the mysql ab delay scriptshost=192.168.100.54user=reppassword=larrydelay=2min=15sprog=/usr/bin/pt-slave-delay. /etc/init.d/functionsstart() {    echo -n "Starting `basename $prog`..."    daemon $prog --host=$host --user=$user --password=$password --delay=$delay --interval=$in --daemonize --log=/var/log/mysql-delay.log    echo}stop() {    echo -n "Stopping `basename $prog`..."    killproc  $prog    echo}case "$1" in     start)        start        ;;    stop)        stop        ;;    restart)        stop        start        ;;    *)        echo "Usage: $0 {start|stop|restart}"        exit 1esac


 

 

bitsCN.com

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
AO3官网入口与中文阅读设置 AO3网页版使用与访问
AO3官网入口与中文阅读设置 AO3网页版使用与访问

本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

20

2026.02.02

主流快递单号查询入口 实时物流进度一站式追踪专题
主流快递单号查询入口 实时物流进度一站式追踪专题

本专题聚合极兔快递、京东快递、中通快递、圆通快递、韵达快递等主流物流平台的单号查询与运单追踪内容,重点解决单号查询、手机号查物流、官网入口直达、包裹进度实时追踪等高频问题,帮助用户快速获取最新物流状态,提升查件效率与使用体验。

6

2026.02.02

Golang WebAssembly(WASM)开发入门
Golang WebAssembly(WASM)开发入门

本专题系统讲解 Golang 在 WebAssembly(WASM)开发中的实践方法,涵盖 WASM 基础原理、Go 编译到 WASM 的流程、与 JavaScript 的交互方式、性能与体积优化,以及典型应用场景(如前端计算、跨平台模块)。帮助开发者掌握 Go 在新一代 Web 技术栈中的应用能力。

1

2026.02.02

PHP Swoole 高性能服务开发
PHP Swoole 高性能服务开发

本专题聚焦 PHP Swoole 扩展在高性能服务端开发中的应用,系统讲解协程模型、异步IO、TCP/HTTP/WebSocket服务器、进程与任务管理、常驻内存架构设计。通过实战案例,帮助开发者掌握 使用 PHP 构建高并发、低延迟服务端应用的工程化能力。

2

2026.02.02

Java JNI 与本地代码交互实战
Java JNI 与本地代码交互实战

本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。

1

2026.02.02

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

61

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

53

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

26

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

31

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 5.1万人学习

MongoDB 教程
MongoDB 教程

共17课时 | 2.5万人学习

CSS教程
CSS教程

共754课时 | 26.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号