[{"data":1,"prerenderedAt":6572},["ShallowReactive",2],{"navigation":3,"/depoly/database/mysql":650,"/depoly/database/mysql-surround":6567},[4,12,31,103],{"title":5,"path":6,"stem":7,"children":8,"icon":11},"更新日志","/update-log","1.update-log/1.index",[9],{"title":10,"path":6,"stem":7},"日志","i-line-md-calendar",{"title":13,"icon":14,"path":15,"stem":16,"children":17,"page":30},"食用指南","i-line-md-cookie","/getting-started","2.getting-started",[18,22,26],{"title":19,"path":20,"stem":21},"微信群聊","/getting-started/wechat","2.getting-started/1.wechat",{"title":23,"path":24,"stem":25},"精彩视频","/getting-started/videos","2.getting-started/2.videos",{"title":27,"path":28,"stem":29},"选购指南","/getting-started/tier","2.getting-started/4.tier",false,{"title":32,"icon":33,"path":34,"stem":35,"children":36,"page":-1},"应用部署","i-material-symbols-logo-dev-outline","/depoly","3.depoly",[37,41,46,62,67,72,77,82,87],{"title":38,"path":34,"stem":39,"icon":40},"视频教程汇总","3.depoly/index","i-tabler-brand-youtube",{"title":42,"path":43,"stem":44,"icon":45},"CloudFlare","/depoly/cloudflare","3.depoly/cloudflare","i-simple-icons-cloudflare",{"title":47,"icon":48,"path":49,"stem":50,"children":51,"page":30},"数据库","i-material-symbols-database-outline","/depoly/database","3.depoly/database",[52,57],{"title":53,"path":54,"stem":55,"icon":56},"MySQL","/depoly/database/mysql","3.depoly/database/mysql","i-lineicons-mysql",{"title":58,"path":59,"stem":60,"icon":61},"SQLite","/depoly/database/sqlite","3.depoly/database/sqlite","i-file-icons-sqlite",{"title":63,"path":64,"stem":65,"icon":66},"Docker","/depoly/docker","3.depoly/docker","i-mdi-docker",{"title":68,"path":69,"stem":70,"icon":71},"邮件","/depoly/mail","3.depoly/mail","i-heroicons-envelope",{"title":73,"path":74,"stem":75,"icon":76},"服务器指标监控","/depoly/monitoring","3.depoly/monitoring","i-cbi-prometheusio",{"title":78,"path":79,"stem":80,"icon":81},"安全","/depoly/security","3.depoly/security","i-gravity-ui-firewall",{"title":83,"path":84,"stem":85,"icon":86},"建站","/depoly/site","3.depoly/site","i-cbi-nginx-proxy-manager",{"title":88,"icon":89,"path":90,"stem":91,"children":92,"page":30},"操作系统","i-simple-icons-linux","/depoly/system","3.depoly/system",[93,98],{"title":94,"path":95,"stem":96,"icon":97},"Debian","/depoly/system/debian","3.depoly/system/debian","i-simple-icons-debian",{"title":99,"path":100,"stem":101,"icon":102},"磁盘","/depoly/system/disk","3.depoly/system/disk","i-streamline-cyber-harddisk-4",{"title":104,"path":105,"stem":106,"children":107,"icon":649},"商户测评","/review","4.review/1.index",[108,111,115,119,123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191,195,199,203,207,211,215,219,223,227,231,235,239,243,247,251,255,259,263,267,271,275,279,283,287,291,295,299,303,307,311,315,319,323,327,331,335,339,343,347,351,355,359,363,367,371,375,379,383,387,391,395,399,403,407,411,415,419,423,427,431,435,439,443,447,451,455,459,463,467,471,475,479,483,487,491,495,499,503,507,511,515,519,523,527,531,535,539,543,547,551,555,559,563,567,571,575,579,583,587,591,595,599,604,608,612,616,621,625,629,633,637,641,645],{"title":109,"path":105,"stem":106,"icon":110},"总表","i-ph-ranking-duotone",{"title":112,"path":113,"stem":114},"100TB","/review/100tb","4.review/2.100tb",{"title":116,"path":117,"stem":118},"AaITR","/review/aaitr","4.review/2.aaitr",{"title":120,"path":121,"stem":122},"AkileCloud（AK）","/review/akile","4.review/2.akile",{"title":124,"path":125,"stem":126},"AkkoCloud","/review/akkocloud","4.review/2.akkocloud",{"title":128,"path":129,"stem":130},"DreamCloud","/review/as211392","4.review/2.as211392",{"title":132,"path":133,"stem":134},"Back Waves","/review/backwaves","4.review/2.backwaves",{"title":136,"path":137,"stem":138},"BageVM","/review/bagevm","4.review/2.bagevm",{"title":140,"path":141,"stem":142},"Bandwagon（搬瓦工）","/review/bandwagon","4.review/2.bandwagon",{"title":144,"path":145,"stem":146},"BestVM（富婆）","/review/bestvm","4.review/2.bestvm",{"title":148,"path":149,"stem":150},"BUG NET","/review/bug","4.review/2.bug",{"title":152,"path":153,"stem":154},"ByteVirt","/review/bytevirt","4.review/2.bytevirt",{"title":156,"path":157,"stem":158},"Churros","/review/churros","4.review/2.churros",{"title":160,"path":161,"stem":162},"Ciallo Networks","/review/ciallonetworks","4.review/2.ciallonetworks",{"title":164,"path":165,"stem":166},"CloudCone（CC）","/review/cloudcone","4.review/2.cloudcone",{"title":168,"path":169,"stem":170},"CloudLeadInno","/review/cloudleadinno","4.review/2.cloudleadinno",{"title":172,"path":173,"stem":174},"ColoCrossing（CCS）","/review/colocrossing","4.review/2.colocrossing",{"title":176,"path":177,"stem":178},"CstoneCloud","/review/cstonecloud","4.review/2.cstonecloud",{"title":180,"path":181,"stem":182},"CubeCloud（魔方云）","/review/cubecloud","4.review/2.cubecloud",{"title":184,"path":185,"stem":186},"DataOnline","/review/dataonline","4.review/2.dataonline",{"title":188,"path":189,"stem":190},"DesiVPS","/review/desivps","4.review/2.desivps",{"title":192,"path":193,"stem":194},"DigitalVirt","/review/digitalvirt","4.review/2.digitalvirt",{"title":196,"path":197,"stem":198},"DMIT（大妈）","/review/dmit","4.review/2.dmit",{"title":200,"path":201,"stem":202},"DogYun（狗云）","/review/dogyun","4.review/2.dogyun",{"title":204,"path":205,"stem":206},"Dotdot Networks","/review/dotdot","4.review/2.dotdot",{"title":208,"path":209,"stem":210},"Ethernet Servers","/review/ethernetservers","4.review/2.ethernetservers",{"title":212,"path":213,"stem":214},"Evoxt（益沃斯）","/review/evoxt","4.review/2.evoxt",{"title":216,"path":217,"stem":218},"Fast Line（台灣速連）","/review/fast-line","4.review/2.fast-line",{"title":220,"path":221,"stem":222},"FiberState（FS）","/review/fiberstate","4.review/2.fiberstate",{"title":224,"path":225,"stem":226},"Flawless Node","/review/flawlessnode","4.review/2.flawlessnode",{"title":228,"path":229,"stem":230},"Fourplex","/review/fourplex","4.review/2.fourplex",{"title":232,"path":233,"stem":234},"GoMami（狗妈）","/review/gomami","4.review/2.gomami",{"title":236,"path":237,"stem":238},"HaloCloud","/review/halocloud","4.review/2.halocloud",{"title":240,"path":241,"stem":242},"Haruka","/review/haruka","4.review/2.haruka",{"title":244,"path":245,"stem":246},"HighEndNetwork","/review/highendnetwork","4.review/2.highendnetwork",{"title":248,"path":249,"stem":250},"HostDare","/review/hostdare","4.review/2.hostdare",{"title":252,"path":253,"stem":254},"iON cloud","/review/ion","4.review/2.ion",{"title":256,"path":257,"stem":258},"iPRaft","/review/ipraft","4.review/2.ipraft",{"title":260,"path":261,"stem":262},"is*hosting","/review/ishosting","4.review/2.ishosting",{"title":264,"path":265,"stem":266},"ISIF Cloud","/review/isif","4.review/2.isif",{"title":268,"path":269,"stem":270},"JUSTG","/review/justg","4.review/2.justg",{"title":272,"path":273,"stem":274},"LightCone（光锥云）","/review/lightcone","4.review/2.lightcone",{"title":276,"path":277,"stem":278},"Lightlayer","/review/lightlayer","4.review/2.lightlayer",{"title":280,"path":281,"stem":282},"Lime Network（烧纸云）","/review/limee","4.review/2.limee",{"title":284,"path":285,"stem":286},"LinkCLi免备案服务器","/review/linkcli","4.review/2.linkcli",{"title":288,"path":289,"stem":290},"Lisahost（丽萨主机）","/review/lisahost","4.review/2.lisahost",{"title":292,"path":293,"stem":294},"Md5Host","/review/md5host","4.review/2.md5host",{"title":296,"path":297,"stem":298},"MOACK（蘑菇）","/review/moack","4.review/2.moack",{"title":300,"path":301,"stem":302},"MoeCloud","/review/moe","4.review/2.moe",{"title":304,"path":305,"stem":306},"NoBrand Cloud","/review/nbdnet","4.review/2.nbdnet",{"title":308,"path":309,"stem":310},"Neburst Networks（奶爸）","/review/neburst","4.review/2.neburst",{"title":312,"path":313,"stem":314},"NETfront","/review/netfront","4.review/2.netfront",{"title":316,"path":317,"stem":318},"NetJett(YVGS)","/review/netjett","4.review/2.netjett",{"title":320,"path":321,"stem":322},"NiiHost","/review/niihost","4.review/2.niihost",{"title":324,"path":325,"stem":326},"NovixLink 诺联主机","/review/novixlink","4.review/2.novixlink",{"title":328,"path":329,"stem":330},"Nube Cloud","/review/nube","4.review/2.nube",{"title":332,"path":333,"stem":334},"Onidel Cloud","/review/onidel","4.review/2.onidel",{"title":336,"path":337,"stem":338},"OrangeVPS","/review/orangevps","4.review/2.orangevps",{"title":340,"path":341,"stem":342},"PittQiao（PQS）","/review/pqs","4.review/2.pqs",{"title":344,"path":345,"stem":346},"QDE","/review/qde","4.review/2.qde",{"title":348,"path":349,"stem":350},"QQG","/review/qqg","4.review/2.qqg",{"title":352,"path":353,"stem":354},"Rabisu","/review/rabisu","4.review/2.rabisu",{"title":356,"path":357,"stem":358},"RackNerd（RN）","/review/racknerd","4.review/2.racknerd",{"title":360,"path":361,"stem":362},"RakSmart","/review/raksmart","4.review/2.raksmart",{"title":364,"path":365,"stem":366},"RFCHost（花卷）","/review/rfchost","4.review/2.rfchost",{"title":368,"path":369,"stem":370},"Sakura（樱络云）","/review/sakura","4.review/2.sakura",{"title":372,"path":373,"stem":374},"SaltyFish（咸鱼）","/review/saltyfish","4.review/2.saltyfish",{"title":376,"path":377,"stem":378},"SixtyNet","/review/sixtynet","4.review/2.sixtynet",{"title":380,"path":381,"stem":382},"Skyline Connect","/review/skylineconnect","4.review/2.skylineconnect",{"title":384,"path":385,"stem":386},"SkyStroll","/review/skystroll","4.review/2.skystroll",{"title":388,"path":389,"stem":390},"Skywolf","/review/skywolf","4.review/2.skywolf",{"title":392,"path":393,"stem":394},"Spartan（斯巴达）","/review/spartan","4.review/2.spartan",{"title":396,"path":397,"stem":398},"SpeedOnline","/review/speedonline","4.review/2.speedonline",{"title":400,"path":401,"stem":402},"StarryDNS（星光网络）","/review/starrydns","4.review/2.starrydns",{"title":404,"path":405,"stem":406},"Tarekcloud","/review/tarekcloud","4.review/2.tarekcloud",{"title":408,"path":409,"stem":410},"Terabix","/review/terabix","4.review/2.terabix",{"title":412,"path":413,"stem":414},"Tokyonline","/review/tokyonline","4.review/2.tokyonline",{"title":416,"path":417,"stem":418},"TOTHOST","/review/tothost","4.review/2.tothost",{"title":420,"path":421,"stem":422},"V.PS（小秘书）","/review/v.ps","4.review/2.v.ps",{"title":424,"path":425,"stem":426},"V5 Server","/review/v5","4.review/2.v5",{"title":428,"path":429,"stem":430},"VIP Cloud","/review/vipcloud","4.review/2.vipcloud",{"title":432,"path":433,"stem":434},"VIRCS","/review/vircs","4.review/2.vircs",{"title":436,"path":437,"stem":438},"VMISS","/review/vmiss","4.review/2.vmiss",{"title":440,"path":441,"stem":442},"VMRack","/review/vmrack","4.review/2.vmrack",{"title":444,"path":445,"stem":446},"VmShell","/review/vmshell","4.review/2.vmshell",{"title":448,"path":449,"stem":450},"VollCloud","/review/vollcloud","4.review/2.vollcloud",{"title":452,"path":453,"stem":454},"VoyraCloud","/review/voyracloud","4.review/2.voyracloud",{"title":456,"path":457,"stem":458},"wap.ac","/review/wap.ac","4.review/2.wap.ac",{"title":460,"path":461,"stem":462},"WePC（车库云）","/review/wepc","4.review/2.wepc",{"title":464,"path":465,"stem":466},"YT.NET（云途）","/review/yt","4.review/2.yt",{"title":468,"path":469,"stem":470},"Zenlayer Cloud","/review/zenlayer","4.review/2.zenlayer",{"title":472,"path":473,"stem":474},"ZgoCloud","/review/zgovps","4.review/2.zgovps",{"title":476,"path":477,"stem":478},"ZoroCloud（索隆云）","/review/zorocloud","4.review/2.zorocloud",{"title":480,"path":481,"stem":482},"七九网络","/review/079idc","4.review/3.079idc",{"title":484,"path":485,"stem":486},"六六云","/review/666clouds","4.review/3.666clouds",{"title":488,"path":489,"stem":490},"阿里云","/review/aliyun","4.review/3.aliyun",{"title":492,"path":493,"stem":494},"数掘科技","/review/gfvps","4.review/3.gfvps",{"title":496,"path":497,"stem":498},"华纳云","/review/hncloud","4.review/3.hncloud",{"title":500,"path":501,"stem":502},"华瑞云","/review/huaruidc","4.review/3.huaruidc",{"title":504,"path":505,"stem":506},"极络云","/review/jiluoyun","4.review/3.jiluoyun",{"title":508,"path":509,"stem":510},"快快網絡","/review/kkidc","4.review/3.kkidc",{"title":512,"path":513,"stem":514},"莱卡云","/review/lcayun","4.review/3.lcayun",{"title":516,"path":517,"stem":518},"领创云","/review/lcyidc","4.review/3.lcyidc",{"title":520,"path":521,"stem":522},"荔枝云（Lycheen）","/review/lycheen","4.review/3.lycheen",{"title":524,"path":525,"stem":526},"轻松云","/review/qyun","4.review/3.qyun",{"title":528,"path":529,"stem":530},"热陈互联IDC","/review/rcvps","4.review/3.rcvps",{"title":532,"path":533,"stem":534},"伤心的云（Sad Cloud）","/review/sadidc","4.review/3.sadidc",{"title":536,"path":537,"stem":538},"速维云","/review/svyun","4.review/3.svyun",{"title":540,"path":541,"stem":542},"腾讯云（Tencent Cloud）","/review/tencent","4.review/3.tencent",{"title":544,"path":545,"stem":546},"野草云","/review/yecaoyun","4.review/3.yecaoyun",{"title":548,"path":549,"stem":550},"蔭雲（YINNET）","/review/yin-net","4.review/3.yin-net",{"title":552,"path":553,"stem":554},"云悠（YUNYOO）","/review/yunyoo","4.review/3.yunyoo",{"title":556,"path":557,"stem":558},"朝暮数据","/review/zhaomu","4.review/3.zhaomu",{"title":560,"path":561,"stem":562},"智贸云","/review/zmyhost","4.review/3.zmyhost",{"title":564,"path":565,"stem":566},"慈云数据","/review/zovps","4.review/3.zovps",{"title":568,"path":569,"stem":570},"AcckCloud","/review/acck","4.review/997.acck",{"title":572,"path":573,"stem":574},"ClawCloud（爪云）","/review/claw","4.review/997.claw",{"title":576,"path":577,"stem":578},"EasyVM","/review/easy","4.review/997.easy",{"title":580,"path":581,"stem":582},"ReliableSite（RS）","/review/reliablesite","4.review/997.reliablesite",{"title":584,"path":585,"stem":586},"TapHip","/review/taphip","4.review/997.taphip",{"title":588,"path":589,"stem":590},"TechnoVM","/review/techno","4.review/997.techno",{"title":592,"path":593,"stem":594},"破碎工坊云","/review/crash","4.review/998.crash",{"title":596,"path":597,"stem":598},"哇沃","/review/wawo","4.review/998.wawo",{"title":600,"path":601,"stem":602,"icon":603},"Admd","/review/admd","4.review/999.admd","i-mdi-dead",{"title":605,"path":606,"stem":607,"icon":603},"DuoCloud","/review/duocloud","4.review/999.duocloud",{"title":609,"path":610,"stem":611,"icon":603},"Faconhost","/review/faconhost","4.review/999.faconhost",{"title":613,"path":614,"stem":615,"icon":603},"HostBlazer","/review/hostblazer","4.review/999.hostblazer",{"title":617,"path":618,"stem":619,"icon":620},"Kurun（昆仑）","/review/kurun","4.review/999.kurun","i-mdi-offline",{"title":622,"path":623,"stem":624,"icon":603},"lingcloud","/review/lingcloud","4.review/999.lingcloud",{"title":626,"path":627,"stem":628,"icon":603},"OMAO（欧猫）","/review/omao","4.review/999.omao",{"title":630,"path":631,"stem":632,"icon":603},"Saturney（萨特尼）","/review/saturney","4.review/999.saturney",{"title":634,"path":635,"stem":636,"icon":603},"SpikeTel","/review/spiketel","4.review/999.spiketel",{"title":638,"path":639,"stem":640,"icon":603},"TWOMEN","/review/twomen","4.review/999.twomen",{"title":642,"path":643,"stem":644,"icon":603},"UserCloud（台妹云）","/review/user","4.review/999.user",{"title":646,"path":647,"stem":648,"icon":603},"VKVM","/review/vkvm","4.review/999.vkvm","i-line-md-clipboard-list",{"id":651,"title":53,"body":652,"description":6559,"extension":6560,"idcId":6561,"meta":6562,"navigation":6564,"path":54,"seo":6565,"stem":55,"__hash__":6566},"docs/3.depoly/database/mysql.md",{"type":653,"value":654,"toc":6532},"minimark",[655,660,665,669,2492,2496,3454,3458,3478,3482,3485,3506,3511,3528,3533,3544,3549,3755,3758,3777,3781,3796,3800,3814,3818,3821,4070,4073,4132,4135,4187,4190,4193,4207,4211,4214,4217,4231,4234,4239,4243,4246,4254,4258,4270,4273,4277,4288,4292,4297,4886,4890,4902,4905,4908,4911,4914,5657,5661,5673,5676,5771,5775,5787,5790,5793,5798,5801,5807,5810,5816,5819,5840,5843,5846,5852,5855,5858,5864,5867,6206,6210,6213,6312,6315,6318,6365,6368,6418,6528],[656,657,659],"h2",{"id":658},"mysql-安装","📘 MySQL 安装",[661,662,664],"h3",{"id":663},"debian-自带仓库安装-mysql","Debian 自带仓库安装 MySQL",[666,667,668],"p",{},"Debian 12（Bookworm）里提供的是 default-mysql-server，它实际安装的是 MariaDB 10.11 LTS。",[670,671,675],"code-collapse",{"close-text":672,"name":673,"open-text":674},"收起","安装脚本","展开",[676,677,683],"pre",{"className":678,"code":679,"filename":680,"language":681,"meta":682,"style":682},"language-bash shiki shiki-themes one-light one-light one-dark-pro","#!/usr/bin/env bash\nset -euo pipefail\n\n# =========================================================\n# Debian 12 一键安装 default-mysql-server（MariaDB）\n# 默认行为：\n# 1. 使用 Debian 自带仓库安装\n# 2. 默认开启远程访问\n# 3. 默认创建远程 root\n# 4. 默认远程 root 密码：DigVPS.COM\n# 5. 本机 root 可直接 mysql 登录\n# 6. 可选：当前 sudo 用户本地直接 mysql 登录\n# =========================================================\n\n# ===== 默认参数 =====\nENABLE_REMOTE_ROOT=\"${ENABLE_REMOTE_ROOT:-1}\"\nREMOTE_ROOT_HOST=\"${REMOTE_ROOT_HOST:-%}\"\nREMOTE_ROOT_PASSWORD=\"${REMOTE_ROOT_PASSWORD:-DigVPS.COM}\"\nMYSQL_PORT=\"${MYSQL_PORT:-3306}\"\nBIND_ADDRESS=\"${BIND_ADDRESS:-0.0.0.0}\"\nCREATE_LOCAL_SUDO_SOCKET_USER=\"${CREATE_LOCAL_SUDO_SOCKET_USER:-1}\"\n\nMYSQL_CNF=\"/etc/mysql/mariadb.conf.d/50-server.cnf\"\nTUNING_CNF=\"/etc/mysql/mariadb.conf.d/99-local-init.cnf\"\n\n# ===== 基础检查 =====\nif [[ \"${EUID}\" -ne 0 ]]; then\n  echo \"请用 root 运行，或 sudo bash $0\"\n  exit 1\nfi\n\nsource /etc/os-release\n\nif [[ \"${ID:-}\" != \"debian\" || \"${VERSION_ID:-}\" != \"12\" ]]; then\n  echo \"本脚本仅支持 Debian 12，当前系统：${PRETTY_NAME:-unknown}\"\n  exit 1\nfi\n\nREAL_USER=\"${SUDO_USER:-}\"\n\nexport DEBIAN_FRONTEND=noninteractive\n\necho \"==> 清理之前残留的 Oracle MySQL APT 仓库配置（如果有）\"\nrm -f /etc/apt/sources.list.d/mysql.list\nrm -f /usr/share/keyrings/mysql.gpg\n\necho \"==> 更新 APT\"\napt-get update\n\necho \"==> 安装 default-mysql-server\"\napt-get install -y default-mysql-server\n\necho \"==> 启动并设置开机自启\"\nsystemctl enable --now mariadb\n\necho \"==> 等待数据库就绪\"\nfor i in {1..30}; do\n  if mysqladmin ping >/dev/null 2>&1; then\n    break\n  fi\n  sleep 1\ndone\n\necho \"==> 测试 root 本地登录\"\nif ! mysql -uroot -e \"SELECT VERSION();\" >/dev/null 2>&1; then\n  echo \"本地 root 无法登录，请检查服务：\"\n  echo \"systemctl status mariadb --no-pager\"\n  exit 1\nfi\n\necho \"==> 配置监听地址和端口\"\ncp -a \"${MYSQL_CNF}\" \"${MYSQL_CNF}.bak.$(date +%s)\" || true\n\nif grep -Eq '^[#[:space:]]*bind-address[[:space:]]*=' \"${MYSQL_CNF}\"; then\n  sed -ri \"s/^[#[:space:]]*bind-address[[:space:]]*=.*/bind-address = ${BIND_ADDRESS}/\" \"${MYSQL_CNF}\"\nelse\n  printf \"\\n[mysqld]\\nbind-address = %s\\n\" \"${BIND_ADDRESS}\" >> \"${MYSQL_CNF}\"\nfi\n\nif grep -Eq '^[#[:space:]]*port[[:space:]]*=' \"${MYSQL_CNF}\"; then\n  sed -ri \"s/^[#[:space:]]*port[[:space:]]*=.*/port = ${MYSQL_PORT}/\" \"${MYSQL_CNF}\"\nelse\n  printf \"port = %s\\n\" \"${MYSQL_PORT}\" >> \"${MYSQL_CNF}\"\nfi\n\necho \"==> 写入基础配置\"\ncat > \"${TUNING_CNF}\" \u003C\u003C'EOF'\n[mysqld]\n\nskip_name_resolve = 1\n\ncharacter-set-server = utf8mb4\ncollation-server = utf8mb4_general_ci\n\nserver_id = 1\nlog_bin = mysql-bin\nbinlog_format = ROW\n\nexpire_logs_days = 7\nmax_binlog_size = 1000M\nsync_binlog = 1\n\ninnodb_file_per_table = 1\nEOF\n\necho \"==> 重启 MariaDB\"\nsystemctl restart mariadb\nsleep 2\n\necho \"==> 确保 root 本地仍可登录\"\nmysql -uroot -e \"SELECT USER(), CURRENT_USER(), VERSION();\"\n\nif [[ \"${CREATE_LOCAL_SUDO_SOCKET_USER}\" == \"1\" && -n \"${REAL_USER}\" && \"${REAL_USER}\" != \"root\" ]]; then\n  echo \"==> 为 sudo 用户创建本地免密账号：${REAL_USER}\"\n  mysql -uroot \u003C\u003CSQL\nCREATE USER IF NOT EXISTS '${REAL_USER}'@'localhost' IDENTIFIED VIA unix_socket;\nGRANT ALL PRIVILEGES ON *.* TO '${REAL_USER}'@'localhost' WITH GRANT OPTION;\nFLUSH PRIVILEGES;\nSQL\nfi\n\nif [[ \"${ENABLE_REMOTE_ROOT}\" == \"1\" ]]; then\n  echo \"==> 开启远程 root\"\n  mysql -uroot \u003C\u003CSQL\nCREATE USER IF NOT EXISTS 'root'@'${REMOTE_ROOT_HOST}' IDENTIFIED BY '${REMOTE_ROOT_PASSWORD}';\nALTER USER 'root'@'${REMOTE_ROOT_HOST}' IDENTIFIED BY '${REMOTE_ROOT_PASSWORD}';\nGRANT ALL PRIVILEGES ON *.* TO 'root'@'${REMOTE_ROOT_HOST}' WITH GRANT OPTION;\nFLUSH PRIVILEGES;\nSQL\nfi\n\necho \"==> 最终检查\"\nmysql -uroot -e \"SELECT VERSION();\"\nmysql -uroot -e \"SELECT User,Host,plugin FROM mysql.user ORDER BY User,Host;\"\n\ncat \u003C\u003CEOF\n\n================ 安装完成 ================\n\n已安装：\n  default-mysql-server（Debian 12 实际为 MariaDB）\n\n本机 root 登录：\n  mysql\n或：\n  sudo mysql\n\n服务名：\n  systemctl status mariadb\n\n远程访问：\n  已默认开启\n\n监听地址：\n  ${BIND_ADDRESS}\n\n端口：\n  ${MYSQL_PORT}\n\n远程 root：\n  root@${REMOTE_ROOT_HOST}\n\n远程 root 默认密码：\n  ${REMOTE_ROOT_PASSWORD}\n\n远程登录命令：\n  mysql -h 服务器IP -P ${MYSQL_PORT} -uroot -p\n\n注意：\n1. 还需要放行防火墙/安全组的 ${MYSQL_PORT}\n2. 当前默认密码是公开口令，装完强烈建议立刻修改\n3. 建议把 REMOTE_ROOT_HOST 改成固定管理 IP，不要长期使用 %\n\n==========================================\nEOF\n","terminal","bash","",[684,685,686,695,710,717,723,729,735,741,747,753,759,765,771,776,781,787,820,841,870,893,928,950,955,966,977,982,988,1021,1036,1045,1051,1056,1065,1070,1122,1144,1151,1156,1161,1182,1187,1201,1206,1215,1228,1238,1243,1251,1260,1265,1273,1287,1292,1300,1315,1320,1328,1352,1375,1381,1387,1395,1401,1406,1414,1442,1450,1458,1465,1470,1475,1483,1525,1530,1558,1589,1595,1627,1632,1637,1663,1691,1696,1726,1731,1736,1744,1769,1775,1780,1786,1791,1797,1803,1808,1814,1820,1826,1831,1837,1843,1849,1854,1860,1866,1871,1879,1889,1898,1903,1911,1923,1928,1988,2004,2017,2032,2047,2053,2058,2063,2068,2093,2101,2112,2136,2158,2173,2178,2183,2188,2193,2201,2213,2225,2230,2239,2244,2250,2255,2261,2267,2272,2278,2284,2290,2296,2301,2307,2313,2318,2324,2330,2335,2341,2352,2357,2363,2372,2377,2383,2395,2400,2406,2415,2420,2426,2441,2446,2452,2464,2470,2476,2481,2487],"code",{"__ignoreMap":682},[687,688,691],"span",{"class":689,"line":690},"line",1,[687,692,694],{"class":693},"slzXe","#!/usr/bin/env bash\n",[687,696,698,702,706],{"class":689,"line":697},2,[687,699,701],{"class":700},"sXhqU","set",[687,703,705],{"class":704},"soiGB"," -euo",[687,707,709],{"class":708},"sBZeU"," pipefail\n",[687,711,713],{"class":689,"line":712},3,[687,714,716],{"emptyLinePlaceholder":715},true,"\n",[687,718,720],{"class":689,"line":719},4,[687,721,722],{"class":693},"# =========================================================\n",[687,724,726],{"class":689,"line":725},5,[687,727,728],{"class":693},"# Debian 12 一键安装 default-mysql-server（MariaDB）\n",[687,730,732],{"class":689,"line":731},6,[687,733,734],{"class":693},"# 默认行为：\n",[687,736,738],{"class":689,"line":737},7,[687,739,740],{"class":693},"# 1. 使用 Debian 自带仓库安装\n",[687,742,744],{"class":689,"line":743},8,[687,745,746],{"class":693},"# 2. 默认开启远程访问\n",[687,748,750],{"class":689,"line":749},9,[687,751,752],{"class":693},"# 3. 默认创建远程 root\n",[687,754,756],{"class":689,"line":755},10,[687,757,758],{"class":693},"# 4. 默认远程 root 密码：DigVPS.COM\n",[687,760,762],{"class":689,"line":761},11,[687,763,764],{"class":693},"# 5. 本机 root 可直接 mysql 登录\n",[687,766,768],{"class":689,"line":767},12,[687,769,770],{"class":693},"# 6. 可选：当前 sudo 用户本地直接 mysql 登录\n",[687,772,774],{"class":689,"line":773},13,[687,775,722],{"class":693},[687,777,779],{"class":689,"line":778},14,[687,780,716],{"emptyLinePlaceholder":715},[687,782,784],{"class":689,"line":783},15,[687,785,786],{"class":693},"# ===== 默认参数 =====\n",[687,788,790,794,798,801,805,807,811,814,817],{"class":689,"line":789},16,[687,791,793],{"class":792},"s3_5o","ENABLE_REMOTE_ROOT",[687,795,797],{"class":796},"sQ8GY","=",[687,799,800],{"class":708},"\"",[687,802,804],{"class":803},"s0nYC","${",[687,806,793],{"class":792},[687,808,810],{"class":809},"skGaQ",":-",[687,812,813],{"class":792},"1",[687,815,816],{"class":803},"}",[687,818,819],{"class":708},"\"\n",[687,821,823,826,828,830,832,834,837,839],{"class":689,"line":822},17,[687,824,825],{"class":792},"REMOTE_ROOT_HOST",[687,827,797],{"class":796},[687,829,800],{"class":708},[687,831,804],{"class":803},[687,833,825],{"class":792},[687,835,836],{"class":809},":-%",[687,838,816],{"class":803},[687,840,819],{"class":708},[687,842,844,847,849,851,853,855,857,860,863,866,868],{"class":689,"line":843},18,[687,845,846],{"class":792},"REMOTE_ROOT_PASSWORD",[687,848,797],{"class":796},[687,850,800],{"class":708},[687,852,804],{"class":803},[687,854,846],{"class":792},[687,856,810],{"class":809},[687,858,859],{"class":792},"DigVPS",[687,861,862],{"class":708},".",[687,864,865],{"class":792},"COM",[687,867,816],{"class":803},[687,869,819],{"class":708},[687,871,873,876,878,880,882,884,886,889,891],{"class":689,"line":872},19,[687,874,875],{"class":792},"MYSQL_PORT",[687,877,797],{"class":796},[687,879,800],{"class":708},[687,881,804],{"class":803},[687,883,875],{"class":792},[687,885,810],{"class":809},[687,887,888],{"class":792},"3306",[687,890,816],{"class":803},[687,892,819],{"class":708},[687,894,896,899,901,903,905,907,909,912,914,916,918,920,922,924,926],{"class":689,"line":895},20,[687,897,898],{"class":792},"BIND_ADDRESS",[687,900,797],{"class":796},[687,902,800],{"class":708},[687,904,804],{"class":803},[687,906,898],{"class":792},[687,908,810],{"class":809},[687,910,911],{"class":792},"0",[687,913,862],{"class":708},[687,915,911],{"class":792},[687,917,862],{"class":708},[687,919,911],{"class":792},[687,921,862],{"class":708},[687,923,911],{"class":792},[687,925,816],{"class":803},[687,927,819],{"class":708},[687,929,931,934,936,938,940,942,944,946,948],{"class":689,"line":930},21,[687,932,933],{"class":792},"CREATE_LOCAL_SUDO_SOCKET_USER",[687,935,797],{"class":796},[687,937,800],{"class":708},[687,939,804],{"class":803},[687,941,933],{"class":792},[687,943,810],{"class":809},[687,945,813],{"class":792},[687,947,816],{"class":803},[687,949,819],{"class":708},[687,951,953],{"class":689,"line":952},22,[687,954,716],{"emptyLinePlaceholder":715},[687,956,958,961,963],{"class":689,"line":957},23,[687,959,960],{"class":792},"MYSQL_CNF",[687,962,797],{"class":796},[687,964,965],{"class":708},"\"/etc/mysql/mariadb.conf.d/50-server.cnf\"\n",[687,967,969,972,974],{"class":689,"line":968},24,[687,970,971],{"class":792},"TUNING_CNF",[687,973,797],{"class":796},[687,975,976],{"class":708},"\"/etc/mysql/mariadb.conf.d/99-local-init.cnf\"\n",[687,978,980],{"class":689,"line":979},25,[687,981,716],{"emptyLinePlaceholder":715},[687,983,985],{"class":689,"line":984},26,[687,986,987],{"class":693},"# ===== 基础检查 =====\n",[687,989,991,995,998,1000,1002,1005,1007,1009,1012,1015,1018],{"class":689,"line":990},27,[687,992,994],{"class":993},"sRLjE","if",[687,996,997],{"class":809}," [[ ",[687,999,800],{"class":708},[687,1001,804],{"class":803},[687,1003,1004],{"class":792},"EUID",[687,1006,816],{"class":803},[687,1008,800],{"class":708},[687,1010,1011],{"class":796}," -ne",[687,1013,1014],{"class":704}," 0",[687,1016,1017],{"class":809}," ]]; ",[687,1019,1020],{"class":993},"then\n",[687,1022,1024,1027,1030,1034],{"class":689,"line":1023},28,[687,1025,1026],{"class":700},"  echo",[687,1028,1029],{"class":708}," \"请用 root 运行，或 sudo bash ",[687,1031,1033],{"class":1032},"sdhAt","$0",[687,1035,819],{"class":708},[687,1037,1039,1042],{"class":689,"line":1038},29,[687,1040,1041],{"class":700},"  exit",[687,1043,1044],{"class":704}," 1\n",[687,1046,1048],{"class":689,"line":1047},30,[687,1049,1050],{"class":993},"fi\n",[687,1052,1054],{"class":689,"line":1053},31,[687,1055,716],{"emptyLinePlaceholder":715},[687,1057,1059,1062],{"class":689,"line":1058},32,[687,1060,1061],{"class":700},"source",[687,1063,1064],{"class":708}," /etc/os-release\n",[687,1066,1068],{"class":689,"line":1067},33,[687,1069,716],{"emptyLinePlaceholder":715},[687,1071,1073,1075,1077,1079,1081,1084,1086,1088,1090,1093,1096,1099,1102,1104,1107,1109,1111,1113,1115,1118,1120],{"class":689,"line":1072},34,[687,1074,994],{"class":993},[687,1076,997],{"class":809},[687,1078,800],{"class":708},[687,1080,804],{"class":803},[687,1082,1083],{"class":792},"ID",[687,1085,810],{"class":809},[687,1087,816],{"class":803},[687,1089,800],{"class":708},[687,1091,1092],{"class":796}," !=",[687,1094,1095],{"class":708}," \"debian\"",[687,1097,1098],{"class":796}," ||",[687,1100,1101],{"class":708}," \"",[687,1103,804],{"class":803},[687,1105,1106],{"class":792},"VERSION_ID",[687,1108,810],{"class":809},[687,1110,816],{"class":803},[687,1112,800],{"class":708},[687,1114,1092],{"class":796},[687,1116,1117],{"class":708}," \"12\"",[687,1119,1017],{"class":809},[687,1121,1020],{"class":993},[687,1123,1125,1127,1130,1132,1135,1137,1140,1142],{"class":689,"line":1124},35,[687,1126,1026],{"class":700},[687,1128,1129],{"class":708}," \"本脚本仅支持 Debian 12，当前系统：",[687,1131,804],{"class":803},[687,1133,1134],{"class":792},"PRETTY_NAME",[687,1136,810],{"class":809},[687,1138,1139],{"class":792},"unknown",[687,1141,816],{"class":803},[687,1143,819],{"class":708},[687,1145,1147,1149],{"class":689,"line":1146},36,[687,1148,1041],{"class":700},[687,1150,1044],{"class":704},[687,1152,1154],{"class":689,"line":1153},37,[687,1155,1050],{"class":993},[687,1157,1159],{"class":689,"line":1158},38,[687,1160,716],{"emptyLinePlaceholder":715},[687,1162,1164,1167,1169,1171,1173,1176,1178,1180],{"class":689,"line":1163},39,[687,1165,1166],{"class":792},"REAL_USER",[687,1168,797],{"class":796},[687,1170,800],{"class":708},[687,1172,804],{"class":803},[687,1174,1175],{"class":792},"SUDO_USER",[687,1177,810],{"class":809},[687,1179,816],{"class":803},[687,1181,819],{"class":708},[687,1183,1185],{"class":689,"line":1184},40,[687,1186,716],{"emptyLinePlaceholder":715},[687,1188,1190,1193,1196,1198],{"class":689,"line":1189},41,[687,1191,1192],{"class":993},"export",[687,1194,1195],{"class":792}," DEBIAN_FRONTEND",[687,1197,797],{"class":796},[687,1199,1200],{"class":792},"noninteractive\n",[687,1202,1204],{"class":689,"line":1203},42,[687,1205,716],{"emptyLinePlaceholder":715},[687,1207,1209,1212],{"class":689,"line":1208},43,[687,1210,1211],{"class":700},"echo",[687,1213,1214],{"class":708}," \"==> 清理之前残留的 Oracle MySQL APT 仓库配置（如果有）\"\n",[687,1216,1218,1222,1225],{"class":689,"line":1217},44,[687,1219,1221],{"class":1220},"sgdWN","rm",[687,1223,1224],{"class":704}," -f",[687,1226,1227],{"class":708}," /etc/apt/sources.list.d/mysql.list\n",[687,1229,1231,1233,1235],{"class":689,"line":1230},45,[687,1232,1221],{"class":1220},[687,1234,1224],{"class":704},[687,1236,1237],{"class":708}," /usr/share/keyrings/mysql.gpg\n",[687,1239,1241],{"class":689,"line":1240},46,[687,1242,716],{"emptyLinePlaceholder":715},[687,1244,1246,1248],{"class":689,"line":1245},47,[687,1247,1211],{"class":700},[687,1249,1250],{"class":708}," \"==> 更新 APT\"\n",[687,1252,1254,1257],{"class":689,"line":1253},48,[687,1255,1256],{"class":1220},"apt-get",[687,1258,1259],{"class":708}," update\n",[687,1261,1263],{"class":689,"line":1262},49,[687,1264,716],{"emptyLinePlaceholder":715},[687,1266,1268,1270],{"class":689,"line":1267},50,[687,1269,1211],{"class":700},[687,1271,1272],{"class":708}," \"==> 安装 default-mysql-server\"\n",[687,1274,1276,1278,1281,1284],{"class":689,"line":1275},51,[687,1277,1256],{"class":1220},[687,1279,1280],{"class":708}," install",[687,1282,1283],{"class":704}," -y",[687,1285,1286],{"class":708}," default-mysql-server\n",[687,1288,1290],{"class":689,"line":1289},52,[687,1291,716],{"emptyLinePlaceholder":715},[687,1293,1295,1297],{"class":689,"line":1294},53,[687,1296,1211],{"class":700},[687,1298,1299],{"class":708}," \"==> 启动并设置开机自启\"\n",[687,1301,1303,1306,1309,1312],{"class":689,"line":1302},54,[687,1304,1305],{"class":1220},"systemctl",[687,1307,1308],{"class":708}," enable",[687,1310,1311],{"class":704}," --now",[687,1313,1314],{"class":708}," mariadb\n",[687,1316,1318],{"class":689,"line":1317},55,[687,1319,716],{"emptyLinePlaceholder":715},[687,1321,1323,1325],{"class":689,"line":1322},56,[687,1324,1211],{"class":700},[687,1326,1327],{"class":708}," \"==> 等待数据库就绪\"\n",[687,1329,1331,1334,1337,1340,1343,1346,1349],{"class":689,"line":1330},57,[687,1332,1333],{"class":993},"for",[687,1335,1336],{"class":792}," i",[687,1338,1339],{"class":993}," in",[687,1341,1342],{"class":809}," {",[687,1344,1345],{"class":1220},"1..30}",[687,1347,1348],{"class":809},"; ",[687,1350,1351],{"class":993},"do\n",[687,1353,1355,1358,1361,1364,1367,1370,1373],{"class":689,"line":1354},58,[687,1356,1357],{"class":993},"  if",[687,1359,1360],{"class":1220}," mysqladmin",[687,1362,1363],{"class":708}," ping",[687,1365,1366],{"class":809}," >",[687,1368,1369],{"class":708},"/dev/null",[687,1371,1372],{"class":809}," 2>&1; ",[687,1374,1020],{"class":993},[687,1376,1378],{"class":689,"line":1377},59,[687,1379,1380],{"class":993},"    break\n",[687,1382,1384],{"class":689,"line":1383},60,[687,1385,1386],{"class":993},"  fi\n",[687,1388,1390,1393],{"class":689,"line":1389},61,[687,1391,1392],{"class":1220},"  sleep",[687,1394,1044],{"class":704},[687,1396,1398],{"class":689,"line":1397},62,[687,1399,1400],{"class":993},"done\n",[687,1402,1404],{"class":689,"line":1403},63,[687,1405,716],{"emptyLinePlaceholder":715},[687,1407,1409,1411],{"class":689,"line":1408},64,[687,1410,1211],{"class":700},[687,1412,1413],{"class":708}," \"==> 测试 root 本地登录\"\n",[687,1415,1417,1419,1422,1425,1428,1431,1434,1436,1438,1440],{"class":689,"line":1416},65,[687,1418,994],{"class":993},[687,1420,1421],{"class":809}," ! ",[687,1423,1424],{"class":1220},"mysql",[687,1426,1427],{"class":704}," -uroot",[687,1429,1430],{"class":704}," -e",[687,1432,1433],{"class":708}," \"SELECT VERSION();\"",[687,1435,1366],{"class":809},[687,1437,1369],{"class":708},[687,1439,1372],{"class":809},[687,1441,1020],{"class":993},[687,1443,1445,1447],{"class":689,"line":1444},66,[687,1446,1026],{"class":700},[687,1448,1449],{"class":708}," \"本地 root 无法登录，请检查服务：\"\n",[687,1451,1453,1455],{"class":689,"line":1452},67,[687,1454,1026],{"class":700},[687,1456,1457],{"class":708}," \"systemctl status mariadb --no-pager\"\n",[687,1459,1461,1463],{"class":689,"line":1460},68,[687,1462,1041],{"class":700},[687,1464,1044],{"class":704},[687,1466,1468],{"class":689,"line":1467},69,[687,1469,1050],{"class":993},[687,1471,1473],{"class":689,"line":1472},70,[687,1474,716],{"emptyLinePlaceholder":715},[687,1476,1478,1480],{"class":689,"line":1477},71,[687,1479,1211],{"class":700},[687,1481,1482],{"class":708}," \"==> 配置监听地址和端口\"\n",[687,1484,1486,1489,1492,1494,1496,1498,1500,1502,1504,1506,1508,1510,1513,1516,1519,1522],{"class":689,"line":1485},72,[687,1487,1488],{"class":1220},"cp",[687,1490,1491],{"class":704}," -a",[687,1493,1101],{"class":708},[687,1495,804],{"class":803},[687,1497,960],{"class":792},[687,1499,816],{"class":803},[687,1501,800],{"class":708},[687,1503,1101],{"class":708},[687,1505,804],{"class":803},[687,1507,960],{"class":792},[687,1509,816],{"class":803},[687,1511,1512],{"class":708},".bak.$(",[687,1514,1515],{"class":1220},"date",[687,1517,1518],{"class":708}," +%s)\"",[687,1520,1521],{"class":809}," || ",[687,1523,1524],{"class":700},"true\n",[687,1526,1528],{"class":689,"line":1527},73,[687,1529,716],{"emptyLinePlaceholder":715},[687,1531,1533,1535,1538,1541,1544,1546,1548,1550,1552,1554,1556],{"class":689,"line":1532},74,[687,1534,994],{"class":993},[687,1536,1537],{"class":1220}," grep",[687,1539,1540],{"class":704}," -Eq",[687,1542,1543],{"class":708}," '^[#[:space:]]*bind-address[[:space:]]*='",[687,1545,1101],{"class":708},[687,1547,804],{"class":803},[687,1549,960],{"class":792},[687,1551,816],{"class":803},[687,1553,800],{"class":708},[687,1555,1348],{"class":809},[687,1557,1020],{"class":993},[687,1559,1561,1564,1567,1570,1572,1574,1576,1579,1581,1583,1585,1587],{"class":689,"line":1560},75,[687,1562,1563],{"class":1220},"  sed",[687,1565,1566],{"class":704}," -ri",[687,1568,1569],{"class":708}," \"s/^[#[:space:]]*bind-address[[:space:]]*=.*/bind-address = ",[687,1571,804],{"class":803},[687,1573,898],{"class":792},[687,1575,816],{"class":803},[687,1577,1578],{"class":708},"/\"",[687,1580,1101],{"class":708},[687,1582,804],{"class":803},[687,1584,960],{"class":792},[687,1586,816],{"class":803},[687,1588,819],{"class":708},[687,1590,1592],{"class":689,"line":1591},76,[687,1593,1594],{"class":993},"else\n",[687,1596,1598,1601,1604,1606,1608,1610,1612,1614,1617,1619,1621,1623,1625],{"class":689,"line":1597},77,[687,1599,1600],{"class":700},"  printf",[687,1602,1603],{"class":708}," \"\\n[mysqld]\\nbind-address = %s\\n\"",[687,1605,1101],{"class":708},[687,1607,804],{"class":803},[687,1609,898],{"class":792},[687,1611,816],{"class":803},[687,1613,800],{"class":708},[687,1615,1616],{"class":809}," >> ",[687,1618,800],{"class":708},[687,1620,804],{"class":803},[687,1622,960],{"class":792},[687,1624,816],{"class":803},[687,1626,819],{"class":708},[687,1628,1630],{"class":689,"line":1629},78,[687,1631,1050],{"class":993},[687,1633,1635],{"class":689,"line":1634},79,[687,1636,716],{"emptyLinePlaceholder":715},[687,1638,1640,1642,1644,1646,1649,1651,1653,1655,1657,1659,1661],{"class":689,"line":1639},80,[687,1641,994],{"class":993},[687,1643,1537],{"class":1220},[687,1645,1540],{"class":704},[687,1647,1648],{"class":708}," '^[#[:space:]]*port[[:space:]]*='",[687,1650,1101],{"class":708},[687,1652,804],{"class":803},[687,1654,960],{"class":792},[687,1656,816],{"class":803},[687,1658,800],{"class":708},[687,1660,1348],{"class":809},[687,1662,1020],{"class":993},[687,1664,1666,1668,1670,1673,1675,1677,1679,1681,1683,1685,1687,1689],{"class":689,"line":1665},81,[687,1667,1563],{"class":1220},[687,1669,1566],{"class":704},[687,1671,1672],{"class":708}," \"s/^[#[:space:]]*port[[:space:]]*=.*/port = ",[687,1674,804],{"class":803},[687,1676,875],{"class":792},[687,1678,816],{"class":803},[687,1680,1578],{"class":708},[687,1682,1101],{"class":708},[687,1684,804],{"class":803},[687,1686,960],{"class":792},[687,1688,816],{"class":803},[687,1690,819],{"class":708},[687,1692,1694],{"class":689,"line":1693},82,[687,1695,1594],{"class":993},[687,1697,1699,1701,1704,1706,1708,1710,1712,1714,1716,1718,1720,1722,1724],{"class":689,"line":1698},83,[687,1700,1600],{"class":700},[687,1702,1703],{"class":708}," \"port = %s\\n\"",[687,1705,1101],{"class":708},[687,1707,804],{"class":803},[687,1709,875],{"class":792},[687,1711,816],{"class":803},[687,1713,800],{"class":708},[687,1715,1616],{"class":809},[687,1717,800],{"class":708},[687,1719,804],{"class":803},[687,1721,960],{"class":792},[687,1723,816],{"class":803},[687,1725,819],{"class":708},[687,1727,1729],{"class":689,"line":1728},84,[687,1730,1050],{"class":993},[687,1732,1734],{"class":689,"line":1733},85,[687,1735,716],{"emptyLinePlaceholder":715},[687,1737,1739,1741],{"class":689,"line":1738},86,[687,1740,1211],{"class":700},[687,1742,1743],{"class":708}," \"==> 写入基础配置\"\n",[687,1745,1747,1750,1753,1755,1757,1759,1761,1763,1766],{"class":689,"line":1746},87,[687,1748,1749],{"class":1220},"cat",[687,1751,1752],{"class":809}," > ",[687,1754,800],{"class":708},[687,1756,804],{"class":803},[687,1758,971],{"class":792},[687,1760,816],{"class":803},[687,1762,800],{"class":708},[687,1764,1765],{"class":809}," \u003C\u003C",[687,1767,1768],{"class":809},"'EOF'\n",[687,1770,1772],{"class":689,"line":1771},88,[687,1773,1774],{"class":708},"[mysqld]\n",[687,1776,1778],{"class":689,"line":1777},89,[687,1779,716],{"emptyLinePlaceholder":715},[687,1781,1783],{"class":689,"line":1782},90,[687,1784,1785],{"class":708},"skip_name_resolve = 1\n",[687,1787,1789],{"class":689,"line":1788},91,[687,1790,716],{"emptyLinePlaceholder":715},[687,1792,1794],{"class":689,"line":1793},92,[687,1795,1796],{"class":708},"character-set-server = utf8mb4\n",[687,1798,1800],{"class":689,"line":1799},93,[687,1801,1802],{"class":708},"collation-server = utf8mb4_general_ci\n",[687,1804,1806],{"class":689,"line":1805},94,[687,1807,716],{"emptyLinePlaceholder":715},[687,1809,1811],{"class":689,"line":1810},95,[687,1812,1813],{"class":708},"server_id = 1\n",[687,1815,1817],{"class":689,"line":1816},96,[687,1818,1819],{"class":708},"log_bin = mysql-bin\n",[687,1821,1823],{"class":689,"line":1822},97,[687,1824,1825],{"class":708},"binlog_format = ROW\n",[687,1827,1829],{"class":689,"line":1828},98,[687,1830,716],{"emptyLinePlaceholder":715},[687,1832,1834],{"class":689,"line":1833},99,[687,1835,1836],{"class":708},"expire_logs_days = 7\n",[687,1838,1840],{"class":689,"line":1839},100,[687,1841,1842],{"class":708},"max_binlog_size = 1000M\n",[687,1844,1846],{"class":689,"line":1845},101,[687,1847,1848],{"class":708},"sync_binlog = 1\n",[687,1850,1852],{"class":689,"line":1851},102,[687,1853,716],{"emptyLinePlaceholder":715},[687,1855,1857],{"class":689,"line":1856},103,[687,1858,1859],{"class":708},"innodb_file_per_table = 1\n",[687,1861,1863],{"class":689,"line":1862},104,[687,1864,1865],{"class":809},"EOF\n",[687,1867,1869],{"class":689,"line":1868},105,[687,1870,716],{"emptyLinePlaceholder":715},[687,1872,1874,1876],{"class":689,"line":1873},106,[687,1875,1211],{"class":700},[687,1877,1878],{"class":708}," \"==> 重启 MariaDB\"\n",[687,1880,1882,1884,1887],{"class":689,"line":1881},107,[687,1883,1305],{"class":1220},[687,1885,1886],{"class":708}," restart",[687,1888,1314],{"class":708},[687,1890,1892,1895],{"class":689,"line":1891},108,[687,1893,1894],{"class":1220},"sleep",[687,1896,1897],{"class":704}," 2\n",[687,1899,1901],{"class":689,"line":1900},109,[687,1902,716],{"emptyLinePlaceholder":715},[687,1904,1906,1908],{"class":689,"line":1905},110,[687,1907,1211],{"class":700},[687,1909,1910],{"class":708}," \"==> 确保 root 本地仍可登录\"\n",[687,1912,1914,1916,1918,1920],{"class":689,"line":1913},111,[687,1915,1424],{"class":1220},[687,1917,1427],{"class":704},[687,1919,1430],{"class":704},[687,1921,1922],{"class":708}," \"SELECT USER(), CURRENT_USER(), VERSION();\"\n",[687,1924,1926],{"class":689,"line":1925},112,[687,1927,716],{"emptyLinePlaceholder":715},[687,1929,1931,1933,1935,1937,1939,1941,1943,1945,1948,1951,1954,1957,1959,1961,1963,1965,1967,1969,1971,1973,1975,1977,1979,1981,1984,1986],{"class":689,"line":1930},113,[687,1932,994],{"class":993},[687,1934,997],{"class":809},[687,1936,800],{"class":708},[687,1938,804],{"class":803},[687,1940,933],{"class":792},[687,1942,816],{"class":803},[687,1944,800],{"class":708},[687,1946,1947],{"class":796}," ==",[687,1949,1950],{"class":708}," \"1\"",[687,1952,1953],{"class":796}," &&",[687,1955,1956],{"class":796}," -n",[687,1958,1101],{"class":708},[687,1960,804],{"class":803},[687,1962,1166],{"class":792},[687,1964,816],{"class":803},[687,1966,800],{"class":708},[687,1968,1953],{"class":796},[687,1970,1101],{"class":708},[687,1972,804],{"class":803},[687,1974,1166],{"class":792},[687,1976,816],{"class":803},[687,1978,800],{"class":708},[687,1980,1092],{"class":796},[687,1982,1983],{"class":708}," \"root\"",[687,1985,1017],{"class":809},[687,1987,1020],{"class":993},[687,1989,1991,1993,1996,1998,2000,2002],{"class":689,"line":1990},114,[687,1992,1026],{"class":700},[687,1994,1995],{"class":708}," \"==> 为 sudo 用户创建本地免密账号：",[687,1997,804],{"class":803},[687,1999,1166],{"class":792},[687,2001,816],{"class":803},[687,2003,819],{"class":708},[687,2005,2007,2010,2012,2014],{"class":689,"line":2006},115,[687,2008,2009],{"class":1220},"  mysql",[687,2011,1427],{"class":704},[687,2013,1765],{"class":809},[687,2015,2016],{"class":809},"SQL\n",[687,2018,2020,2023,2025,2027,2029],{"class":689,"line":2019},116,[687,2021,2022],{"class":708},"CREATE USER IF NOT EXISTS '",[687,2024,804],{"class":803},[687,2026,1166],{"class":792},[687,2028,816],{"class":803},[687,2030,2031],{"class":708},"'@'localhost' IDENTIFIED VIA unix_socket;\n",[687,2033,2035,2038,2040,2042,2044],{"class":689,"line":2034},117,[687,2036,2037],{"class":708},"GRANT ALL PRIVILEGES ON *.* TO '",[687,2039,804],{"class":803},[687,2041,1166],{"class":792},[687,2043,816],{"class":803},[687,2045,2046],{"class":708},"'@'localhost' WITH GRANT OPTION;\n",[687,2048,2050],{"class":689,"line":2049},118,[687,2051,2052],{"class":708},"FLUSH PRIVILEGES;\n",[687,2054,2056],{"class":689,"line":2055},119,[687,2057,2016],{"class":809},[687,2059,2061],{"class":689,"line":2060},120,[687,2062,1050],{"class":993},[687,2064,2066],{"class":689,"line":2065},121,[687,2067,716],{"emptyLinePlaceholder":715},[687,2069,2071,2073,2075,2077,2079,2081,2083,2085,2087,2089,2091],{"class":689,"line":2070},122,[687,2072,994],{"class":993},[687,2074,997],{"class":809},[687,2076,800],{"class":708},[687,2078,804],{"class":803},[687,2080,793],{"class":792},[687,2082,816],{"class":803},[687,2084,800],{"class":708},[687,2086,1947],{"class":796},[687,2088,1950],{"class":708},[687,2090,1017],{"class":809},[687,2092,1020],{"class":993},[687,2094,2096,2098],{"class":689,"line":2095},123,[687,2097,1026],{"class":700},[687,2099,2100],{"class":708}," \"==> 开启远程 root\"\n",[687,2102,2104,2106,2108,2110],{"class":689,"line":2103},124,[687,2105,2009],{"class":1220},[687,2107,1427],{"class":704},[687,2109,1765],{"class":809},[687,2111,2016],{"class":809},[687,2113,2115,2118,2120,2122,2124,2127,2129,2131,2133],{"class":689,"line":2114},125,[687,2116,2117],{"class":708},"CREATE USER IF NOT EXISTS 'root'@'",[687,2119,804],{"class":803},[687,2121,825],{"class":792},[687,2123,816],{"class":803},[687,2125,2126],{"class":708},"' IDENTIFIED BY '",[687,2128,804],{"class":803},[687,2130,846],{"class":792},[687,2132,816],{"class":803},[687,2134,2135],{"class":708},"';\n",[687,2137,2139,2142,2144,2146,2148,2150,2152,2154,2156],{"class":689,"line":2138},126,[687,2140,2141],{"class":708},"ALTER USER 'root'@'",[687,2143,804],{"class":803},[687,2145,825],{"class":792},[687,2147,816],{"class":803},[687,2149,2126],{"class":708},[687,2151,804],{"class":803},[687,2153,846],{"class":792},[687,2155,816],{"class":803},[687,2157,2135],{"class":708},[687,2159,2161,2164,2166,2168,2170],{"class":689,"line":2160},127,[687,2162,2163],{"class":708},"GRANT ALL PRIVILEGES ON *.* TO 'root'@'",[687,2165,804],{"class":803},[687,2167,825],{"class":792},[687,2169,816],{"class":803},[687,2171,2172],{"class":708},"' WITH GRANT OPTION;\n",[687,2174,2176],{"class":689,"line":2175},128,[687,2177,2052],{"class":708},[687,2179,2181],{"class":689,"line":2180},129,[687,2182,2016],{"class":809},[687,2184,2186],{"class":689,"line":2185},130,[687,2187,1050],{"class":993},[687,2189,2191],{"class":689,"line":2190},131,[687,2192,716],{"emptyLinePlaceholder":715},[687,2194,2196,2198],{"class":689,"line":2195},132,[687,2197,1211],{"class":700},[687,2199,2200],{"class":708}," \"==> 最终检查\"\n",[687,2202,2204,2206,2208,2210],{"class":689,"line":2203},133,[687,2205,1424],{"class":1220},[687,2207,1427],{"class":704},[687,2209,1430],{"class":704},[687,2211,2212],{"class":708}," \"SELECT VERSION();\"\n",[687,2214,2216,2218,2220,2222],{"class":689,"line":2215},134,[687,2217,1424],{"class":1220},[687,2219,1427],{"class":704},[687,2221,1430],{"class":704},[687,2223,2224],{"class":708}," \"SELECT User,Host,plugin FROM mysql.user ORDER BY User,Host;\"\n",[687,2226,2228],{"class":689,"line":2227},135,[687,2229,716],{"emptyLinePlaceholder":715},[687,2231,2233,2235,2237],{"class":689,"line":2232},136,[687,2234,1749],{"class":1220},[687,2236,1765],{"class":809},[687,2238,1865],{"class":809},[687,2240,2242],{"class":689,"line":2241},137,[687,2243,716],{"emptyLinePlaceholder":715},[687,2245,2247],{"class":689,"line":2246},138,[687,2248,2249],{"class":708},"================ 安装完成 ================\n",[687,2251,2253],{"class":689,"line":2252},139,[687,2254,716],{"emptyLinePlaceholder":715},[687,2256,2258],{"class":689,"line":2257},140,[687,2259,2260],{"class":708},"已安装：\n",[687,2262,2264],{"class":689,"line":2263},141,[687,2265,2266],{"class":708},"  default-mysql-server（Debian 12 实际为 MariaDB）\n",[687,2268,2270],{"class":689,"line":2269},142,[687,2271,716],{"emptyLinePlaceholder":715},[687,2273,2275],{"class":689,"line":2274},143,[687,2276,2277],{"class":708},"本机 root 登录：\n",[687,2279,2281],{"class":689,"line":2280},144,[687,2282,2283],{"class":708},"  mysql\n",[687,2285,2287],{"class":689,"line":2286},145,[687,2288,2289],{"class":708},"或：\n",[687,2291,2293],{"class":689,"line":2292},146,[687,2294,2295],{"class":708},"  sudo mysql\n",[687,2297,2299],{"class":689,"line":2298},147,[687,2300,716],{"emptyLinePlaceholder":715},[687,2302,2304],{"class":689,"line":2303},148,[687,2305,2306],{"class":708},"服务名：\n",[687,2308,2310],{"class":689,"line":2309},149,[687,2311,2312],{"class":708},"  systemctl status mariadb\n",[687,2314,2316],{"class":689,"line":2315},150,[687,2317,716],{"emptyLinePlaceholder":715},[687,2319,2321],{"class":689,"line":2320},151,[687,2322,2323],{"class":708},"远程访问：\n",[687,2325,2327],{"class":689,"line":2326},152,[687,2328,2329],{"class":708},"  已默认开启\n",[687,2331,2333],{"class":689,"line":2332},153,[687,2334,716],{"emptyLinePlaceholder":715},[687,2336,2338],{"class":689,"line":2337},154,[687,2339,2340],{"class":708},"监听地址：\n",[687,2342,2344,2347,2349],{"class":689,"line":2343},155,[687,2345,2346],{"class":803},"  ${",[687,2348,898],{"class":792},[687,2350,2351],{"class":803},"}\n",[687,2353,2355],{"class":689,"line":2354},156,[687,2356,716],{"emptyLinePlaceholder":715},[687,2358,2360],{"class":689,"line":2359},157,[687,2361,2362],{"class":708},"端口：\n",[687,2364,2366,2368,2370],{"class":689,"line":2365},158,[687,2367,2346],{"class":803},[687,2369,875],{"class":792},[687,2371,2351],{"class":803},[687,2373,2375],{"class":689,"line":2374},159,[687,2376,716],{"emptyLinePlaceholder":715},[687,2378,2380],{"class":689,"line":2379},160,[687,2381,2382],{"class":708},"远程 root：\n",[687,2384,2386,2389,2391,2393],{"class":689,"line":2385},161,[687,2387,2388],{"class":708},"  root@",[687,2390,804],{"class":803},[687,2392,825],{"class":792},[687,2394,2351],{"class":803},[687,2396,2398],{"class":689,"line":2397},162,[687,2399,716],{"emptyLinePlaceholder":715},[687,2401,2403],{"class":689,"line":2402},163,[687,2404,2405],{"class":708},"远程 root 默认密码：\n",[687,2407,2409,2411,2413],{"class":689,"line":2408},164,[687,2410,2346],{"class":803},[687,2412,846],{"class":792},[687,2414,2351],{"class":803},[687,2416,2418],{"class":689,"line":2417},165,[687,2419,716],{"emptyLinePlaceholder":715},[687,2421,2423],{"class":689,"line":2422},166,[687,2424,2425],{"class":708},"远程登录命令：\n",[687,2427,2429,2432,2434,2436,2438],{"class":689,"line":2428},167,[687,2430,2431],{"class":708},"  mysql -h 服务器IP -P ",[687,2433,804],{"class":803},[687,2435,875],{"class":792},[687,2437,816],{"class":803},[687,2439,2440],{"class":708}," -uroot -p\n",[687,2442,2444],{"class":689,"line":2443},168,[687,2445,716],{"emptyLinePlaceholder":715},[687,2447,2449],{"class":689,"line":2448},169,[687,2450,2451],{"class":708},"注意：\n",[687,2453,2455,2458,2460,2462],{"class":689,"line":2454},170,[687,2456,2457],{"class":708},"1. 还需要放行防火墙/安全组的 ",[687,2459,804],{"class":803},[687,2461,875],{"class":792},[687,2463,2351],{"class":803},[687,2465,2467],{"class":689,"line":2466},171,[687,2468,2469],{"class":708},"2. 当前默认密码是公开口令，装完强烈建议立刻修改\n",[687,2471,2473],{"class":689,"line":2472},172,[687,2474,2475],{"class":708},"3. 建议把 REMOTE_ROOT_HOST 改成固定管理 IP，不要长期使用 %\n",[687,2477,2479],{"class":689,"line":2478},173,[687,2480,716],{"emptyLinePlaceholder":715},[687,2482,2484],{"class":689,"line":2483},174,[687,2485,2486],{"class":708},"==========================================\n",[687,2488,2490],{"class":689,"line":2489},175,[687,2491,1865],{"class":809},[661,2493,2495],{"id":2494},"mysql-官方社区版","MySQL 官方社区版",[670,2497,2498],{"close-text":672,"name":673,"open-text":674},[676,2499,2501],{"className":678,"code":2500,"filename":680,"language":681,"meta":682,"style":682},"#!/usr/bin/env bash\nset -e\n\nROOT_PASSWORD=${ROOT_PASSWORD:-DigVPS.COM}\nREPL_USER=${REPL_USER:-repl}\nREPL_PASSWORD=${REPL_PASSWORD:-DigVPS-Repl}\n\nAPT_PKG=mysql-apt-config_0.8.36-1_all.deb\nAPT_URL=https://dev.mysql.com/get/${APT_PKG}\n\nCONF=/etc/mysql/mysql.conf.d/99-digvps.cnf\n\necho \"==============================\"\necho \" DigVPS MySQL Installer\"\necho \"==============================\"\n\nif [ \"$EUID\" -ne 0 ]; then\n  echo \"Please run as root\"\n  exit\nfi\n\necho \"Installing dependencies...\"\napt update\napt install -y wget gnupg lsb-release debconf-utils ca-certificates\n\necho \"Downloading MySQL APT repo...\"\nwget -qO /tmp/${APT_PKG} ${APT_URL}\n\necho \"Configuring MySQL repository...\"\n\ncat \u003C\u003CEOF | debconf-set-selections\nmysql-apt-config mysql-apt-config/select-server select mysql-innovation\nmysql-apt-config mysql-apt-config/select-product select Ok\nEOF\n\ndpkg -i /tmp/${APT_PKG} || apt -f install -y\n\necho \"Installing MySQL...\"\napt update\nDEBIAN_FRONTEND=noninteractive apt install -y mysql-server\n\nSERVER_ID=$((RANDOM % 10000 + 1))\n\necho \"Writing MySQL config...\"\n\ncat > ${CONF} \u003C\u003CEOF\n[mysqld]\n\nbind-address=0.0.0.0\n\nserver-id=${SERVER_ID}\n\nlog_bin=mysql-bin\nsync_binlog = 1\ninnodb_flush_log_at_trx_commit = 1\nbinlog_format=ROW\nbinlog_row_image=FULL\nrelay_log=relay-bin\n\ngtid_mode=ON\nenforce_gtid_consistency=ON\n\nslow_query_log=ON\nslow_query_log_file=/var/log/mysql/mysql-slow.log\nlong_query_time=2\n\nskip_name_resolve\n\ninnodb_buffer_pool_size=512M\ninnodb_redo_log_capacity=512M\nEOF\n\necho \"Validating MySQL config...\"\nmysqld --validate-config\n\necho \"Starting MySQL...\"\nsystemctl enable mysql\nsystemctl restart mysql\n\necho \"Waiting MySQL ready...\"\n\nfor i in {1..30}; do\n  if mysqladmin ping >/dev/null 2>&1; then\n    break\n  fi\n  sleep 1\ndone\n\necho \"Configuring users...\"\n\nmysql --protocol=socket -uroot \u003C\u003CEOF\n\nALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;\n\nCREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY '${ROOT_PASSWORD}';\nGRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;\n\nCREATE USER IF NOT EXISTS '${REPL_USER}'@'%' IDENTIFIED BY '${REPL_PASSWORD}';\nGRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '${REPL_USER}'@'%';\n\nFLUSH PRIVILEGES;\n\nEOF\n\necho\necho \"==============================\"\necho \" MySQL Installed Successfully\"\necho \"==============================\"\n\nmysql -V\n\necho\necho \"Local login:\"\necho \"mysql\"\necho\necho \"Remote login:\"\necho \"mysql -h SERVER_IP -u root -p\"\necho \"Password: ${ROOT_PASSWORD}\"\n\necho\necho \"Replication user:\"\necho \"User: ${REPL_USER}\"\necho \"Password: ${REPL_PASSWORD}\"\n\necho\necho \"Master status:\"\nmysql -e \"SHOW BINARY LOG STATUS\" -E || true\n",[684,2502,2503,2507,2514,2518,2540,2558,2576,2580,2590,2606,2610,2620,2624,2631,2638,2644,2648,2671,2678,2683,2687,2691,2698,2705,2728,2732,2739,2763,2767,2774,2778,2793,2798,2803,2807,2811,2838,2842,2849,2855,2875,2879,2907,2911,2918,2922,2938,2942,2946,2951,2955,2966,2970,2975,2979,2984,2989,2994,2999,3003,3008,3013,3017,3022,3027,3032,3036,3041,3045,3050,3055,3059,3063,3070,3078,3082,3089,3098,3106,3110,3117,3121,3137,3153,3157,3161,3167,3171,3175,3182,3186,3199,3203,3208,3212,3225,3230,3234,3255,3269,3273,3277,3281,3285,3289,3294,3300,3307,3313,3317,3324,3328,3332,3339,3346,3350,3357,3364,3379,3383,3387,3394,3409,3423,3427,3431,3438],{"__ignoreMap":682},[687,2504,2505],{"class":689,"line":690},[687,2506,694],{"class":693},[687,2508,2509,2511],{"class":689,"line":697},[687,2510,701],{"class":700},[687,2512,2513],{"class":704}," -e\n",[687,2515,2516],{"class":689,"line":712},[687,2517,716],{"emptyLinePlaceholder":715},[687,2519,2520,2523,2525,2528,2530,2532,2534,2536,2538],{"class":689,"line":719},[687,2521,2522],{"class":792},"ROOT_PASSWORD",[687,2524,797],{"class":796},[687,2526,804],{"class":2527},"sfXbn",[687,2529,2522],{"class":792},[687,2531,810],{"class":809},[687,2533,859],{"class":792},[687,2535,862],{"class":809},[687,2537,865],{"class":792},[687,2539,2351],{"class":2527},[687,2541,2542,2545,2547,2549,2551,2553,2556],{"class":689,"line":725},[687,2543,2544],{"class":792},"REPL_USER",[687,2546,797],{"class":796},[687,2548,804],{"class":2527},[687,2550,2544],{"class":792},[687,2552,810],{"class":809},[687,2554,2555],{"class":792},"repl",[687,2557,2351],{"class":2527},[687,2559,2560,2563,2565,2567,2569,2571,2574],{"class":689,"line":731},[687,2561,2562],{"class":792},"REPL_PASSWORD",[687,2564,797],{"class":796},[687,2566,804],{"class":2527},[687,2568,2562],{"class":792},[687,2570,810],{"class":809},[687,2572,2573],{"class":792},"DigVPS-Repl",[687,2575,2351],{"class":2527},[687,2577,2578],{"class":689,"line":737},[687,2579,716],{"emptyLinePlaceholder":715},[687,2581,2582,2585,2587],{"class":689,"line":743},[687,2583,2584],{"class":792},"APT_PKG",[687,2586,797],{"class":796},[687,2588,2589],{"class":708},"mysql-apt-config_0.8.36-1_all.deb\n",[687,2591,2592,2595,2597,2600,2602,2604],{"class":689,"line":749},[687,2593,2594],{"class":792},"APT_URL",[687,2596,797],{"class":796},[687,2598,2599],{"class":708},"https://dev.mysql.com/get/",[687,2601,804],{"class":2527},[687,2603,2584],{"class":792},[687,2605,2351],{"class":2527},[687,2607,2608],{"class":689,"line":755},[687,2609,716],{"emptyLinePlaceholder":715},[687,2611,2612,2615,2617],{"class":689,"line":761},[687,2613,2614],{"class":792},"CONF",[687,2616,797],{"class":796},[687,2618,2619],{"class":708},"/etc/mysql/mysql.conf.d/99-digvps.cnf\n",[687,2621,2622],{"class":689,"line":767},[687,2623,716],{"emptyLinePlaceholder":715},[687,2625,2626,2628],{"class":689,"line":773},[687,2627,1211],{"class":700},[687,2629,2630],{"class":708}," \"==============================\"\n",[687,2632,2633,2635],{"class":689,"line":778},[687,2634,1211],{"class":700},[687,2636,2637],{"class":708}," \" DigVPS MySQL Installer\"\n",[687,2639,2640,2642],{"class":689,"line":783},[687,2641,1211],{"class":700},[687,2643,2630],{"class":708},[687,2645,2646],{"class":689,"line":789},[687,2647,716],{"emptyLinePlaceholder":715},[687,2649,2650,2652,2655,2657,2660,2662,2664,2666,2669],{"class":689,"line":822},[687,2651,994],{"class":993},[687,2653,2654],{"class":809}," [ ",[687,2656,800],{"class":708},[687,2658,2659],{"class":792},"$EUID",[687,2661,800],{"class":708},[687,2663,1011],{"class":796},[687,2665,1014],{"class":704},[687,2667,2668],{"class":809}," ]; ",[687,2670,1020],{"class":993},[687,2672,2673,2675],{"class":689,"line":843},[687,2674,1026],{"class":700},[687,2676,2677],{"class":708}," \"Please run as root\"\n",[687,2679,2680],{"class":689,"line":872},[687,2681,2682],{"class":700},"  exit\n",[687,2684,2685],{"class":689,"line":895},[687,2686,1050],{"class":993},[687,2688,2689],{"class":689,"line":930},[687,2690,716],{"emptyLinePlaceholder":715},[687,2692,2693,2695],{"class":689,"line":952},[687,2694,1211],{"class":700},[687,2696,2697],{"class":708}," \"Installing dependencies...\"\n",[687,2699,2700,2703],{"class":689,"line":957},[687,2701,2702],{"class":1220},"apt",[687,2704,1259],{"class":708},[687,2706,2707,2709,2711,2713,2716,2719,2722,2725],{"class":689,"line":968},[687,2708,2702],{"class":1220},[687,2710,1280],{"class":708},[687,2712,1283],{"class":704},[687,2714,2715],{"class":708}," wget",[687,2717,2718],{"class":708}," gnupg",[687,2720,2721],{"class":708}," lsb-release",[687,2723,2724],{"class":708}," debconf-utils",[687,2726,2727],{"class":708}," ca-certificates\n",[687,2729,2730],{"class":689,"line":979},[687,2731,716],{"emptyLinePlaceholder":715},[687,2733,2734,2736],{"class":689,"line":984},[687,2735,1211],{"class":700},[687,2737,2738],{"class":708}," \"Downloading MySQL APT repo...\"\n",[687,2740,2741,2744,2747,2750,2752,2754,2756,2759,2761],{"class":689,"line":990},[687,2742,2743],{"class":1220},"wget",[687,2745,2746],{"class":704}," -qO",[687,2748,2749],{"class":708}," /tmp/",[687,2751,804],{"class":2527},[687,2753,2584],{"class":792},[687,2755,816],{"class":2527},[687,2757,2758],{"class":2527}," ${",[687,2760,2594],{"class":792},[687,2762,2351],{"class":2527},[687,2764,2765],{"class":689,"line":1023},[687,2766,716],{"emptyLinePlaceholder":715},[687,2768,2769,2771],{"class":689,"line":1038},[687,2770,1211],{"class":700},[687,2772,2773],{"class":708}," \"Configuring MySQL repository...\"\n",[687,2775,2776],{"class":689,"line":1047},[687,2777,716],{"emptyLinePlaceholder":715},[687,2779,2780,2782,2784,2787,2790],{"class":689,"line":1053},[687,2781,1749],{"class":1220},[687,2783,1765],{"class":809},[687,2785,2786],{"class":809},"EOF",[687,2788,2789],{"class":809}," | ",[687,2791,2792],{"class":1220},"debconf-set-selections\n",[687,2794,2795],{"class":689,"line":1058},[687,2796,2797],{"class":708},"mysql-apt-config mysql-apt-config/select-server select mysql-innovation\n",[687,2799,2800],{"class":689,"line":1067},[687,2801,2802],{"class":708},"mysql-apt-config mysql-apt-config/select-product select Ok\n",[687,2804,2805],{"class":689,"line":1072},[687,2806,1865],{"class":809},[687,2808,2809],{"class":689,"line":1124},[687,2810,716],{"emptyLinePlaceholder":715},[687,2812,2813,2816,2819,2821,2823,2825,2827,2829,2831,2833,2835],{"class":689,"line":1146},[687,2814,2815],{"class":1220},"dpkg",[687,2817,2818],{"class":704}," -i",[687,2820,2749],{"class":708},[687,2822,804],{"class":2527},[687,2824,2584],{"class":792},[687,2826,816],{"class":2527},[687,2828,1521],{"class":809},[687,2830,2702],{"class":1220},[687,2832,1224],{"class":704},[687,2834,1280],{"class":708},[687,2836,2837],{"class":704}," -y\n",[687,2839,2840],{"class":689,"line":1153},[687,2841,716],{"emptyLinePlaceholder":715},[687,2843,2844,2846],{"class":689,"line":1158},[687,2845,1211],{"class":700},[687,2847,2848],{"class":708}," \"Installing MySQL...\"\n",[687,2850,2851,2853],{"class":689,"line":1163},[687,2852,2702],{"class":1220},[687,2854,1259],{"class":708},[687,2856,2857,2860,2862,2865,2868,2870,2872],{"class":689,"line":1184},[687,2858,2859],{"class":792},"DEBIAN_FRONTEND",[687,2861,797],{"class":796},[687,2863,2864],{"class":708},"noninteractive",[687,2866,2867],{"class":1220}," apt",[687,2869,1280],{"class":708},[687,2871,1283],{"class":704},[687,2873,2874],{"class":708}," mysql-server\n",[687,2876,2877],{"class":689,"line":1189},[687,2878,716],{"emptyLinePlaceholder":715},[687,2880,2881,2884,2886,2889,2892,2895,2898,2901,2904],{"class":689,"line":1203},[687,2882,2883],{"class":792},"SERVER_ID",[687,2885,797],{"class":796},[687,2887,2888],{"class":809},"$((",[687,2890,2891],{"class":1220},"RANDOM",[687,2893,2894],{"class":708}," %",[687,2896,2897],{"class":704}," 10000",[687,2899,2900],{"class":708}," +",[687,2902,2903],{"class":704}," 1",[687,2905,2906],{"class":809},"))\n",[687,2908,2909],{"class":689,"line":1208},[687,2910,716],{"emptyLinePlaceholder":715},[687,2912,2913,2915],{"class":689,"line":1217},[687,2914,1211],{"class":700},[687,2916,2917],{"class":708}," \"Writing MySQL config...\"\n",[687,2919,2920],{"class":689,"line":1230},[687,2921,716],{"emptyLinePlaceholder":715},[687,2923,2924,2926,2928,2930,2932,2934,2936],{"class":689,"line":1240},[687,2925,1749],{"class":1220},[687,2927,1752],{"class":809},[687,2929,804],{"class":2527},[687,2931,2614],{"class":792},[687,2933,816],{"class":2527},[687,2935,1765],{"class":809},[687,2937,1865],{"class":809},[687,2939,2940],{"class":689,"line":1245},[687,2941,1774],{"class":708},[687,2943,2944],{"class":689,"line":1253},[687,2945,716],{"emptyLinePlaceholder":715},[687,2947,2948],{"class":689,"line":1262},[687,2949,2950],{"class":708},"bind-address=0.0.0.0\n",[687,2952,2953],{"class":689,"line":1267},[687,2954,716],{"emptyLinePlaceholder":715},[687,2956,2957,2960,2962,2964],{"class":689,"line":1275},[687,2958,2959],{"class":708},"server-id=",[687,2961,804],{"class":803},[687,2963,2883],{"class":792},[687,2965,2351],{"class":803},[687,2967,2968],{"class":689,"line":1289},[687,2969,716],{"emptyLinePlaceholder":715},[687,2971,2972],{"class":689,"line":1294},[687,2973,2974],{"class":708},"log_bin=mysql-bin\n",[687,2976,2977],{"class":689,"line":1302},[687,2978,1848],{"class":708},[687,2980,2981],{"class":689,"line":1317},[687,2982,2983],{"class":708},"innodb_flush_log_at_trx_commit = 1\n",[687,2985,2986],{"class":689,"line":1322},[687,2987,2988],{"class":708},"binlog_format=ROW\n",[687,2990,2991],{"class":689,"line":1330},[687,2992,2993],{"class":708},"binlog_row_image=FULL\n",[687,2995,2996],{"class":689,"line":1354},[687,2997,2998],{"class":708},"relay_log=relay-bin\n",[687,3000,3001],{"class":689,"line":1377},[687,3002,716],{"emptyLinePlaceholder":715},[687,3004,3005],{"class":689,"line":1383},[687,3006,3007],{"class":708},"gtid_mode=ON\n",[687,3009,3010],{"class":689,"line":1389},[687,3011,3012],{"class":708},"enforce_gtid_consistency=ON\n",[687,3014,3015],{"class":689,"line":1397},[687,3016,716],{"emptyLinePlaceholder":715},[687,3018,3019],{"class":689,"line":1403},[687,3020,3021],{"class":708},"slow_query_log=ON\n",[687,3023,3024],{"class":689,"line":1408},[687,3025,3026],{"class":708},"slow_query_log_file=/var/log/mysql/mysql-slow.log\n",[687,3028,3029],{"class":689,"line":1416},[687,3030,3031],{"class":708},"long_query_time=2\n",[687,3033,3034],{"class":689,"line":1444},[687,3035,716],{"emptyLinePlaceholder":715},[687,3037,3038],{"class":689,"line":1452},[687,3039,3040],{"class":708},"skip_name_resolve\n",[687,3042,3043],{"class":689,"line":1460},[687,3044,716],{"emptyLinePlaceholder":715},[687,3046,3047],{"class":689,"line":1467},[687,3048,3049],{"class":708},"innodb_buffer_pool_size=512M\n",[687,3051,3052],{"class":689,"line":1472},[687,3053,3054],{"class":708},"innodb_redo_log_capacity=512M\n",[687,3056,3057],{"class":689,"line":1477},[687,3058,1865],{"class":809},[687,3060,3061],{"class":689,"line":1485},[687,3062,716],{"emptyLinePlaceholder":715},[687,3064,3065,3067],{"class":689,"line":1527},[687,3066,1211],{"class":700},[687,3068,3069],{"class":708}," \"Validating MySQL config...\"\n",[687,3071,3072,3075],{"class":689,"line":1532},[687,3073,3074],{"class":1220},"mysqld",[687,3076,3077],{"class":704}," --validate-config\n",[687,3079,3080],{"class":689,"line":1560},[687,3081,716],{"emptyLinePlaceholder":715},[687,3083,3084,3086],{"class":689,"line":1591},[687,3085,1211],{"class":700},[687,3087,3088],{"class":708}," \"Starting MySQL...\"\n",[687,3090,3091,3093,3095],{"class":689,"line":1597},[687,3092,1305],{"class":1220},[687,3094,1308],{"class":708},[687,3096,3097],{"class":708}," mysql\n",[687,3099,3100,3102,3104],{"class":689,"line":1629},[687,3101,1305],{"class":1220},[687,3103,1886],{"class":708},[687,3105,3097],{"class":708},[687,3107,3108],{"class":689,"line":1634},[687,3109,716],{"emptyLinePlaceholder":715},[687,3111,3112,3114],{"class":689,"line":1639},[687,3113,1211],{"class":700},[687,3115,3116],{"class":708}," \"Waiting MySQL ready...\"\n",[687,3118,3119],{"class":689,"line":1665},[687,3120,716],{"emptyLinePlaceholder":715},[687,3122,3123,3125,3127,3129,3131,3133,3135],{"class":689,"line":1693},[687,3124,1333],{"class":993},[687,3126,1336],{"class":792},[687,3128,1339],{"class":993},[687,3130,1342],{"class":809},[687,3132,1345],{"class":1220},[687,3134,1348],{"class":809},[687,3136,1351],{"class":993},[687,3138,3139,3141,3143,3145,3147,3149,3151],{"class":689,"line":1698},[687,3140,1357],{"class":993},[687,3142,1360],{"class":1220},[687,3144,1363],{"class":708},[687,3146,1366],{"class":809},[687,3148,1369],{"class":708},[687,3150,1372],{"class":809},[687,3152,1020],{"class":993},[687,3154,3155],{"class":689,"line":1728},[687,3156,1380],{"class":993},[687,3158,3159],{"class":689,"line":1733},[687,3160,1386],{"class":993},[687,3162,3163,3165],{"class":689,"line":1738},[687,3164,1392],{"class":1220},[687,3166,1044],{"class":704},[687,3168,3169],{"class":689,"line":1746},[687,3170,1400],{"class":993},[687,3172,3173],{"class":689,"line":1771},[687,3174,716],{"emptyLinePlaceholder":715},[687,3176,3177,3179],{"class":689,"line":1777},[687,3178,1211],{"class":700},[687,3180,3181],{"class":708}," \"Configuring users...\"\n",[687,3183,3184],{"class":689,"line":1782},[687,3185,716],{"emptyLinePlaceholder":715},[687,3187,3188,3190,3193,3195,3197],{"class":689,"line":1788},[687,3189,1424],{"class":1220},[687,3191,3192],{"class":704}," --protocol=socket",[687,3194,1427],{"class":704},[687,3196,1765],{"class":809},[687,3198,1865],{"class":809},[687,3200,3201],{"class":689,"line":1793},[687,3202,716],{"emptyLinePlaceholder":715},[687,3204,3205],{"class":689,"line":1799},[687,3206,3207],{"class":708},"ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;\n",[687,3209,3210],{"class":689,"line":1805},[687,3211,716],{"emptyLinePlaceholder":715},[687,3213,3214,3217,3219,3221,3223],{"class":689,"line":1810},[687,3215,3216],{"class":708},"CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY '",[687,3218,804],{"class":803},[687,3220,2522],{"class":792},[687,3222,816],{"class":803},[687,3224,2135],{"class":708},[687,3226,3227],{"class":689,"line":1816},[687,3228,3229],{"class":708},"GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;\n",[687,3231,3232],{"class":689,"line":1822},[687,3233,716],{"emptyLinePlaceholder":715},[687,3235,3236,3238,3240,3242,3244,3247,3249,3251,3253],{"class":689,"line":1828},[687,3237,2022],{"class":708},[687,3239,804],{"class":803},[687,3241,2544],{"class":792},[687,3243,816],{"class":803},[687,3245,3246],{"class":708},"'@'%' IDENTIFIED BY '",[687,3248,804],{"class":803},[687,3250,2562],{"class":792},[687,3252,816],{"class":803},[687,3254,2135],{"class":708},[687,3256,3257,3260,3262,3264,3266],{"class":689,"line":1833},[687,3258,3259],{"class":708},"GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '",[687,3261,804],{"class":803},[687,3263,2544],{"class":792},[687,3265,816],{"class":803},[687,3267,3268],{"class":708},"'@'%';\n",[687,3270,3271],{"class":689,"line":1839},[687,3272,716],{"emptyLinePlaceholder":715},[687,3274,3275],{"class":689,"line":1845},[687,3276,2052],{"class":708},[687,3278,3279],{"class":689,"line":1851},[687,3280,716],{"emptyLinePlaceholder":715},[687,3282,3283],{"class":689,"line":1856},[687,3284,1865],{"class":809},[687,3286,3287],{"class":689,"line":1862},[687,3288,716],{"emptyLinePlaceholder":715},[687,3290,3291],{"class":689,"line":1868},[687,3292,3293],{"class":700},"echo\n",[687,3295,3296,3298],{"class":689,"line":1873},[687,3297,1211],{"class":700},[687,3299,2630],{"class":708},[687,3301,3302,3304],{"class":689,"line":1881},[687,3303,1211],{"class":700},[687,3305,3306],{"class":708}," \" MySQL Installed Successfully\"\n",[687,3308,3309,3311],{"class":689,"line":1891},[687,3310,1211],{"class":700},[687,3312,2630],{"class":708},[687,3314,3315],{"class":689,"line":1900},[687,3316,716],{"emptyLinePlaceholder":715},[687,3318,3319,3321],{"class":689,"line":1905},[687,3320,1424],{"class":1220},[687,3322,3323],{"class":704}," -V\n",[687,3325,3326],{"class":689,"line":1913},[687,3327,716],{"emptyLinePlaceholder":715},[687,3329,3330],{"class":689,"line":1925},[687,3331,3293],{"class":700},[687,3333,3334,3336],{"class":689,"line":1930},[687,3335,1211],{"class":700},[687,3337,3338],{"class":708}," \"Local login:\"\n",[687,3340,3341,3343],{"class":689,"line":1990},[687,3342,1211],{"class":700},[687,3344,3345],{"class":708}," \"mysql\"\n",[687,3347,3348],{"class":689,"line":2006},[687,3349,3293],{"class":700},[687,3351,3352,3354],{"class":689,"line":2019},[687,3353,1211],{"class":700},[687,3355,3356],{"class":708}," \"Remote login:\"\n",[687,3358,3359,3361],{"class":689,"line":2034},[687,3360,1211],{"class":700},[687,3362,3363],{"class":708}," \"mysql -h SERVER_IP -u root -p\"\n",[687,3365,3366,3368,3371,3373,3375,3377],{"class":689,"line":2049},[687,3367,1211],{"class":700},[687,3369,3370],{"class":708}," \"Password: ",[687,3372,804],{"class":803},[687,3374,2522],{"class":792},[687,3376,816],{"class":803},[687,3378,819],{"class":708},[687,3380,3381],{"class":689,"line":2055},[687,3382,716],{"emptyLinePlaceholder":715},[687,3384,3385],{"class":689,"line":2060},[687,3386,3293],{"class":700},[687,3388,3389,3391],{"class":689,"line":2065},[687,3390,1211],{"class":700},[687,3392,3393],{"class":708}," \"Replication user:\"\n",[687,3395,3396,3398,3401,3403,3405,3407],{"class":689,"line":2070},[687,3397,1211],{"class":700},[687,3399,3400],{"class":708}," \"User: ",[687,3402,804],{"class":803},[687,3404,2544],{"class":792},[687,3406,816],{"class":803},[687,3408,819],{"class":708},[687,3410,3411,3413,3415,3417,3419,3421],{"class":689,"line":2095},[687,3412,1211],{"class":700},[687,3414,3370],{"class":708},[687,3416,804],{"class":803},[687,3418,2562],{"class":792},[687,3420,816],{"class":803},[687,3422,819],{"class":708},[687,3424,3425],{"class":689,"line":2103},[687,3426,716],{"emptyLinePlaceholder":715},[687,3428,3429],{"class":689,"line":2114},[687,3430,3293],{"class":700},[687,3432,3433,3435],{"class":689,"line":2138},[687,3434,1211],{"class":700},[687,3436,3437],{"class":708}," \"Master status:\"\n",[687,3439,3440,3442,3444,3447,3450,3452],{"class":689,"line":2160},[687,3441,1424],{"class":1220},[687,3443,1430],{"class":704},[687,3445,3446],{"class":708}," \"SHOW BINARY LOG STATUS\"",[687,3448,3449],{"class":704}," -E",[687,3451,1521],{"class":809},[687,3453,1524],{"class":700},[656,3455,3457],{"id":3456},"binlog","📘 MySQL 二进制日志格式",[666,3459,3460],{},[3461,3462,3463,3464,3472,3473],"strong",{},"结合视频教程食用 ",[3465,3466,3471],"a",{"href":3467,"rel":3468,"target":3470},"https://youtu.be/CXKC_u_YVSM?t=210",[3469],"nofollow","_blank","油管"," ",[3465,3474,3477],{"href":3475,"rel":3476,"target":3470},"https://www.bilibili.com/video/BV1tvc6zyEjN?t=210",[3469],"B站",[3479,3480],"youtube-video",{"url":3481},"https://www.youtube.com/embed/CXKC_u_YVSM?start=210",[661,3483,3484],{"id":3484},"基于段的格式",[676,3486,3489],{"className":678,"code":3487,"filename":3488,"language":681,"meta":682,"style":682},"# mysql 5.7之前默认格式\nbinlog_format=STATEMENT\n","conf",[684,3490,3491,3496],{"__ignoreMap":682},[687,3492,3493],{"class":689,"line":690},[687,3494,3495],{"class":693},"# mysql 5.7之前默认格式\n",[687,3497,3498,3501,3503],{"class":689,"line":697},[687,3499,3500],{"class":792},"binlog_format",[687,3502,797],{"class":796},[687,3504,3505],{"class":708},"STATEMENT\n",[666,3507,3508],{},[3461,3509,3510],{},"优点",[3512,3513,3514,3522,3525],"ul",{},[3515,3516,3517,3518,3521],"li",{},"基于段日志",[684,3519,3520],{},"记录的是 SQL 语句","，所以日志记录量相对较小，节约磁盘及网络 I/O",[3515,3523,3524],{},"并不强制要求主从数据库的表定义完全相同",[3515,3526,3527],{},"相比于基于行的复制方式更为灵活",[666,3529,3530],{},[3461,3531,3532],{},"缺点",[3512,3534,3535,3538,3541],{},[3515,3536,3537],{},"必须要记录上下文信息保证语句在从服务器上执行的结果和在主服务器上相同，但是一些特定函数，如 UUID(),user() 这样非确定性函数还是无法复制。",[3515,3539,3540],{},"对于存储过程，触发器，自定义函数进行的修改也可能造成数据不一致。",[3515,3542,3543],{},"相比基于行的复制方式在从执行时需要更多的行锁。",[666,3545,3546],{},[3461,3547,3548],{},"演示",[676,3550,3552],{"className":678,"code":3551,"filename":1424,"language":681,"meta":682,"style":682},"# 显示当前格式\nMariaDB [(none)]> show variables like 'binlog_format';\n\n# 设定为段格式\nMariaDB [(none)]> set session binlog_format=statement;\n\n# 刷新 binlog 产生新文件便于观察\nMariaDB [(none)]> flush logs;\n\n# 创建新的数据库和表\nMariaDB [(none)]> create database digvps;\nMariaDB [(none)]> use digvps;\nMariaDB [digvps]> create table user(id int,name varchar(10));\n\n# 插入数据更新数据\nMariaDB [digvps]> insert into user values(1,'pang'),(2,'bb');\nMariaDB [digvps]> update user set name='pangge' where id =1;\n\n# 查看 binlog 日志\nroot@master:~# cd /var/lib/mysql/\nroot@master:/var/lib/mysql# mysqlbinlog mysql-bin.000002\n",[684,3553,3554,3559,3573,3577,3582,3598,3602,3607,3614,3618,3623,3630,3637,3662,3666,3671,3696,3724,3728,3733,3744],{"__ignoreMap":682},[687,3555,3556],{"class":689,"line":690},[687,3557,3558],{"class":693},"# 显示当前格式\n",[687,3560,3561,3564,3567,3570],{"class":689,"line":697},[687,3562,3563],{"class":1220},"MariaDB",[687,3565,3566],{"class":809}," [(none)]> show variables like ",[687,3568,3569],{"class":708},"'binlog_format'",[687,3571,3572],{"class":809},";\n",[687,3574,3575],{"class":689,"line":712},[687,3576,716],{"emptyLinePlaceholder":715},[687,3578,3579],{"class":689,"line":719},[687,3580,3581],{"class":693},"# 设定为段格式\n",[687,3583,3584,3586,3589,3591,3593,3596],{"class":689,"line":725},[687,3585,3563],{"class":1220},[687,3587,3588],{"class":809}," [(none)]> set session ",[687,3590,3500],{"class":792},[687,3592,797],{"class":796},[687,3594,3595],{"class":708},"statement",[687,3597,3572],{"class":809},[687,3599,3600],{"class":689,"line":731},[687,3601,716],{"emptyLinePlaceholder":715},[687,3603,3604],{"class":689,"line":737},[687,3605,3606],{"class":693},"# 刷新 binlog 产生新文件便于观察\n",[687,3608,3609,3611],{"class":689,"line":743},[687,3610,3563],{"class":1220},[687,3612,3613],{"class":809}," [(none)]> flush logs;\n",[687,3615,3616],{"class":689,"line":749},[687,3617,716],{"emptyLinePlaceholder":715},[687,3619,3620],{"class":689,"line":755},[687,3621,3622],{"class":693},"# 创建新的数据库和表\n",[687,3624,3625,3627],{"class":689,"line":761},[687,3626,3563],{"class":1220},[687,3628,3629],{"class":809}," [(none)]> create database digvps;\n",[687,3631,3632,3634],{"class":689,"line":767},[687,3633,3563],{"class":1220},[687,3635,3636],{"class":809}," [(none)]> use digvps;\n",[687,3638,3639,3641,3644,3647,3650,3653,3656,3659],{"class":689,"line":773},[687,3640,3563],{"class":1220},[687,3642,3643],{"class":809}," [digvps]> create table user(",[687,3645,3646],{"class":1220},"id",[687,3648,3649],{"class":708}," int,name",[687,3651,3652],{"class":708}," varchar",[687,3654,3655],{"class":809},"(",[687,3657,3658],{"class":1220},"10",[687,3660,3661],{"class":809},"));\n",[687,3663,3664],{"class":689,"line":778},[687,3665,716],{"emptyLinePlaceholder":715},[687,3667,3668],{"class":689,"line":783},[687,3669,3670],{"class":693},"# 插入数据更新数据\n",[687,3672,3673,3675,3678,3681,3684,3687,3690,3693],{"class":689,"line":789},[687,3674,3563],{"class":1220},[687,3676,3677],{"class":809}," [digvps]> insert into user values(",[687,3679,3680],{"class":1220},"1,",[687,3682,3683],{"class":1220},"'pang'",[687,3685,3686],{"class":809},"),(",[687,3688,3689],{"class":1220},"2,",[687,3691,3692],{"class":1220},"'bb'",[687,3694,3695],{"class":809},");\n",[687,3697,3698,3700,3703,3706,3708,3711,3714,3717,3720,3722],{"class":689,"line":822},[687,3699,3563],{"class":1220},[687,3701,3702],{"class":809}," [digvps]> update user set ",[687,3704,3705],{"class":792},"name",[687,3707,797],{"class":796},[687,3709,3710],{"class":708},"'pangge'",[687,3712,3713],{"class":1220}," where",[687,3715,3716],{"class":708}," id",[687,3718,3719],{"class":708}," =",[687,3721,813],{"class":704},[687,3723,3572],{"class":809},[687,3725,3726],{"class":689,"line":843},[687,3727,716],{"emptyLinePlaceholder":715},[687,3729,3730],{"class":689,"line":872},[687,3731,3732],{"class":693},"# 查看 binlog 日志\n",[687,3734,3735,3738,3741],{"class":689,"line":895},[687,3736,3737],{"class":1220},"root@master:~#",[687,3739,3740],{"class":708}," cd",[687,3742,3743],{"class":708}," /var/lib/mysql/\n",[687,3745,3746,3749,3752],{"class":689,"line":930},[687,3747,3748],{"class":1220},"root@master:/var/lib/mysql#",[687,3750,3751],{"class":708}," mysqlbinlog",[687,3753,3754],{"class":708}," mysql-bin.000002\n",[661,3756,3757],{"id":3757},"基于行的格式",[676,3759,3761],{"className":678,"code":3760,"filename":3488,"language":681,"meta":682,"style":682},"# mysql 5.7 之后的默认格式\nbinlog_format=ROW\n",[684,3762,3763,3768],{"__ignoreMap":682},[687,3764,3765],{"class":689,"line":690},[687,3766,3767],{"class":693},"# mysql 5.7 之后的默认格式\n",[687,3769,3770,3772,3774],{"class":689,"line":697},[687,3771,3500],{"class":792},[687,3773,797],{"class":796},[687,3775,3776],{"class":708},"ROW\n",[666,3778,3779],{},[3461,3780,3510],{},[3512,3782,3783,3790,3793],{},[3515,3784,3785,3786,3789],{},"Row 格式可以避免 MySQL 复制中出现的主从不一致问题，",[684,3787,3788],{},"记录的是增删改查的每一行的数据更改","。",[3515,3791,3792],{},"对每一行数据的修改比基于段的复制高效，减少从库锁的使用。",[3515,3794,3795],{},"误操作的时候还可以通过分析二进制日志，对日志中记录的数据修改操作进行反向处理来达到恢复数据的目的。",[666,3797,3798],{},[3461,3799,3532],{},[3512,3801,3802,3808,3811],{},[3515,3803,3804,3805],{},"记录的日志量加大 binlog_row_image =",[687,3806,3807],{},"FULL|MINIMAL|NOBLOB",[3515,3809,3810],{},"要求主从数据库的表结构相同，否则可能会终端复制",[3515,3812,3813],{},"无法在从库单独执行触发器",[666,3815,3816],{},[3461,3817,3548],{},[666,3819,3820],{},"full - 记录整行数据（所有列）",[676,3822,3824],{"className":678,"code":3823,"filename":1424,"language":681,"meta":682,"style":682},"# 设置日志格式为 row\nMariaDB [digvps]> set session binlog_format=row;\nMariaDB [digvps]> show variables like 'binlog_format';\nMariaDB [digvps]> flush logs;\nMariaDB [digvps]> show variables like 'binlog_row_image';\n\n# 做些操作\n## 创建表\nCREATE TABLE `user` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(10) DEFAULT NULL,\n  `url` varchar(20) DEFAULT NULL,\n  `intro` text DEFAULT NULL,\n  PRIMARY KEY (`id`)\n)\n## 添加数据\nMariaDB [digvps]> insert into user values(3,'cc','一二三四五，上山打老虎');\n## 删除操作\nMariaDB [digvps]> delete from user where id=1;\n\n# 查看日志\nroot@master:/var/lib/mysql# mysqlbinlog -vv mysql-bin.000004\n",[684,3825,3826,3831,3847,3858,3865,3876,3880,3885,3890,3910,3934,3948,3962,3980,4000,4004,4009,4029,4034,4049,4053,4058],{"__ignoreMap":682},[687,3827,3828],{"class":689,"line":690},[687,3829,3830],{"class":693},"# 设置日志格式为 row\n",[687,3832,3833,3835,3838,3840,3842,3845],{"class":689,"line":697},[687,3834,3563],{"class":1220},[687,3836,3837],{"class":809}," [digvps]> set session ",[687,3839,3500],{"class":792},[687,3841,797],{"class":796},[687,3843,3844],{"class":708},"row",[687,3846,3572],{"class":809},[687,3848,3849,3851,3854,3856],{"class":689,"line":712},[687,3850,3563],{"class":1220},[687,3852,3853],{"class":809}," [digvps]> show variables like ",[687,3855,3569],{"class":708},[687,3857,3572],{"class":809},[687,3859,3860,3862],{"class":689,"line":719},[687,3861,3563],{"class":1220},[687,3863,3864],{"class":809}," [digvps]> flush logs;\n",[687,3866,3867,3869,3871,3874],{"class":689,"line":725},[687,3868,3563],{"class":1220},[687,3870,3853],{"class":809},[687,3872,3873],{"class":708},"'binlog_row_image'",[687,3875,3572],{"class":809},[687,3877,3878],{"class":689,"line":731},[687,3879,716],{"emptyLinePlaceholder":715},[687,3881,3882],{"class":689,"line":737},[687,3883,3884],{"class":693},"# 做些操作\n",[687,3886,3887],{"class":689,"line":743},[687,3888,3889],{"class":693},"## 创建表\n",[687,3891,3892,3895,3898,3901,3904,3907],{"class":689,"line":749},[687,3893,3894],{"class":1220},"CREATE",[687,3896,3897],{"class":708}," TABLE",[687,3899,3900],{"class":708}," `",[687,3902,3903],{"class":1220},"user",[687,3905,3906],{"class":708},"`",[687,3908,3909],{"class":809}," (\n",[687,3911,3912,3915,3917,3919,3922,3925,3928,3931],{"class":689,"line":755},[687,3913,3914],{"class":708},"  `",[687,3916,3646],{"class":1220},[687,3918,3906],{"class":708},[687,3920,3921],{"class":1220}," int(11",[687,3923,3924],{"class":809},") ",[687,3926,3927],{"class":1220},"NOT",[687,3929,3930],{"class":708}," NULL",[687,3932,3933],{"class":708}," AUTO_INCREMENT,\n",[687,3935,3936,3938,3940,3942,3945],{"class":689,"line":761},[687,3937,3914],{"class":708},[687,3939,3705],{"class":1220},[687,3941,3906],{"class":708},[687,3943,3944],{"class":1220}," varchar(10",[687,3946,3947],{"class":809},") DEFAULT NULL,\n",[687,3949,3950,3952,3955,3957,3960],{"class":689,"line":767},[687,3951,3914],{"class":708},[687,3953,3954],{"class":1220},"url",[687,3956,3906],{"class":708},[687,3958,3959],{"class":1220}," varchar(20",[687,3961,3947],{"class":809},[687,3963,3964,3966,3969,3971,3974,3977],{"class":689,"line":773},[687,3965,3914],{"class":708},[687,3967,3968],{"class":1220},"intro",[687,3970,3906],{"class":708},[687,3972,3973],{"class":1220}," text",[687,3975,3976],{"class":708}," DEFAULT",[687,3978,3979],{"class":708}," NULL,\n",[687,3981,3982,3985,3988,3991,3993,3995,3997],{"class":689,"line":778},[687,3983,3984],{"class":1220},"  PRIMARY",[687,3986,3987],{"class":708}," KEY",[687,3989,3990],{"class":809}," (",[687,3992,3906],{"class":708},[687,3994,3646],{"class":1220},[687,3996,3906],{"class":708},[687,3998,3999],{"class":809},")\n",[687,4001,4002],{"class":689,"line":783},[687,4003,3999],{"class":809},[687,4005,4006],{"class":689,"line":789},[687,4007,4008],{"class":693},"## 添加数据\n",[687,4010,4011,4013,4015,4018,4021,4024,4027],{"class":689,"line":822},[687,4012,3563],{"class":1220},[687,4014,3677],{"class":809},[687,4016,4017],{"class":1220},"3,",[687,4019,4020],{"class":1220},"'cc'",[687,4022,4023],{"class":1220},",",[687,4025,4026],{"class":1220},"'一二三四五，上山打老虎'",[687,4028,3695],{"class":809},[687,4030,4031],{"class":689,"line":843},[687,4032,4033],{"class":693},"## 删除操作\n",[687,4035,4036,4038,4041,4043,4045,4047],{"class":689,"line":872},[687,4037,3563],{"class":1220},[687,4039,4040],{"class":809}," [digvps]> delete from user where ",[687,4042,3646],{"class":792},[687,4044,797],{"class":796},[687,4046,813],{"class":708},[687,4048,3572],{"class":809},[687,4050,4051],{"class":689,"line":895},[687,4052,716],{"emptyLinePlaceholder":715},[687,4054,4055],{"class":689,"line":930},[687,4056,4057],{"class":693},"# 查看日志\n",[687,4059,4060,4062,4064,4067],{"class":689,"line":952},[687,4061,3748],{"class":1220},[687,4063,3751],{"class":708},[687,4065,4066],{"class":704}," -vv",[687,4068,4069],{"class":708}," mysql-bin.000004\n",[666,4071,4072],{},"minimal - 只记录必要的列",[676,4074,4076],{"className":678,"code":4075,"filename":1424,"language":681,"meta":682,"style":682},"# 日志存储设置为 minimal\nMariaDB [digvps]> set session binlog_row_image=minimal;\n\n# 更新数据\nMariaDB [digvps]> update user set name='name 2' where id =2;\n",[684,4077,4078,4083,4099,4103,4108],{"__ignoreMap":682},[687,4079,4080],{"class":689,"line":690},[687,4081,4082],{"class":693},"# 日志存储设置为 minimal\n",[687,4084,4085,4087,4089,4092,4094,4097],{"class":689,"line":697},[687,4086,3563],{"class":1220},[687,4088,3837],{"class":809},[687,4090,4091],{"class":792},"binlog_row_image",[687,4093,797],{"class":796},[687,4095,4096],{"class":708},"minimal",[687,4098,3572],{"class":809},[687,4100,4101],{"class":689,"line":712},[687,4102,716],{"emptyLinePlaceholder":715},[687,4104,4105],{"class":689,"line":719},[687,4106,4107],{"class":693},"# 更新数据\n",[687,4109,4110,4112,4114,4116,4118,4121,4123,4125,4127,4130],{"class":689,"line":725},[687,4111,3563],{"class":1220},[687,4113,3702],{"class":809},[687,4115,3705],{"class":792},[687,4117,797],{"class":796},[687,4119,4120],{"class":708},"'name 2'",[687,4122,3713],{"class":1220},[687,4124,3716],{"class":708},[687,4126,3719],{"class":708},[687,4128,4129],{"class":704},"2",[687,4131,3572],{"class":809},[666,4133,4134],{},"noblob - 和 FULL 类似，但不记录 BLOB / TEXT 列",[676,4136,4138],{"className":678,"code":4137,"filename":1424,"language":681,"meta":682,"style":682},"# 日志存储设置为 noblob\nset session binlog_row_image=noblob;\n\n# 更新数据\nMariaDB [digvps]> update user set name='name 2' where id =2;\n",[684,4139,4140,4145,4157,4161,4165],{"__ignoreMap":682},[687,4141,4142],{"class":689,"line":690},[687,4143,4144],{"class":693},"# 日志存储设置为 noblob\n",[687,4146,4147,4149,4152,4155],{"class":689,"line":697},[687,4148,701],{"class":700},[687,4150,4151],{"class":708}," session",[687,4153,4154],{"class":708}," binlog_row_image=noblob",[687,4156,3572],{"class":809},[687,4158,4159],{"class":689,"line":712},[687,4160,716],{"emptyLinePlaceholder":715},[687,4162,4163],{"class":689,"line":719},[687,4164,4107],{"class":693},[687,4166,4167,4169,4171,4173,4175,4177,4179,4181,4183,4185],{"class":689,"line":725},[687,4168,3563],{"class":1220},[687,4170,3702],{"class":809},[687,4172,3705],{"class":792},[687,4174,797],{"class":796},[687,4176,4120],{"class":708},[687,4178,3713],{"class":1220},[687,4180,3716],{"class":708},[687,4182,3719],{"class":708},[687,4184,4129],{"class":704},[687,4186,3572],{"class":809},[661,4188,4189],{"id":4189},"混合日志格式",[666,4191,4192],{},"根据 SQL 语句由系统决定在基于段和基于行的日志格式中进行选择",[676,4194,4196],{"className":678,"code":4195,"filename":3488,"language":681,"meta":682,"style":682},"binlog_format=MIXED\n",[684,4197,4198],{"__ignoreMap":682},[687,4199,4200,4202,4204],{"class":689,"line":690},[687,4201,3500],{"class":792},[687,4203,797],{"class":796},[687,4205,4206],{"class":708},"MIXED\n",[656,4208,4210],{"id":4209},"主从同步","📘 主从同步",[661,4212,4213],{"id":4213},"介绍",[666,4215,4216],{},"主从同步解决了什么问题",[3512,4218,4219,4222,4225,4228],{},[3515,4220,4221],{},"实现在不通服务器上的数据分布",[3515,4223,4224],{},"实现数据读取的负载均衡",[3515,4226,4227],{},"增强了数据安全性",[3515,4229,4230],{},"实现数据库高可用和故障切换",[666,4232,4233],{},"注意事项",[3512,4235,4236],{},[3515,4237,4238],{},"binlog 记录了所有对 MySQL 数据库的修改事件，包括增删改查事件和对表结构的修改事件，对于回滚或者其他原因未成功执行的事件不会记录。",[661,4240,4242],{"id":4241},"mysql复制拓扑","MySQL复制拓扑",[666,4244,4245],{},"复制的本质是 Source 把事务写入 binary log，然后 Replica 读取并应用这些事件。",[676,4247,4252],{"className":4248,"code":4250,"language":4251},[4249],"language-text","                +--------------------+\n                |     Source DB      |\n                | (Primary/Master)   |\n                +--------------------+\n                        |\n                        | 1. 写入 binlog\n                        v\n                +--------------------+\n                |    Binary Log      |\n                |   mysql-bin.xxx    |\n                +--------------------+\n                        |\n                        | 2. 发送 binlog event\n                        v\n        +-------------------------------------+\n        |        Replica IO Thread            |\n        |   (从 Source 拉取 binlog event)      |\n        +-------------------------------------+\n                        |\n                        | 3. 写入 relay log\n                        v\n                +--------------------+\n                |      Relay Log     |\n                |   relay-log.xxx    |\n                +--------------------+\n                        |\n                        | 4. SQL Thread\n                        v\n                +--------------------+\n                |     Replica DB     |\n                |    应用 SQL 变更    |\n                +--------------------+\n","text",[684,4253,4250],{"__ignoreMap":682},[656,4255,4257],{"id":4256},"mysql-repl","📘 基于日志点的复制",[666,4259,4260],{},[3461,4261,3463,4262,3472,4266],{},[3465,4263,3471],{"href":4264,"rel":4265,"target":3470},"https://youtu.be/CXKC_u_YVSM",[3469],[3465,4267,3477],{"href":4268,"rel":4269,"target":3470},"https://www.bilibili.com/video/BV1tvc6zyEjN/",[3469],[3479,4271],{"url":4272},"https://www.youtube.com/embed/CXKC_u_YVSM",[666,4274,4275],{},[3461,4276,3510],{},[3512,4278,4279,4282,4285],{},[3515,4280,4281],{},"是 MySQL 最早支持的复制技术，Bug 相对较少。",[3515,4283,4284],{},"对 SQL 查询没有任何限制",[3515,4286,4287],{},"故障处理比较容易",[666,4289,4290],{},[3461,4291,3532],{},[3512,4293,4294],{},[3515,4295,4296],{},"故障转移时重新获取新主库的二进制文件偏移量比较困难。",[4298,4299,4301,4305,4308,4382,4385,4388,4431,4434,4503,4506,4509,4547,4550,4566,4569,4587,4591,4594,4597],"steps",{"level":4300},"4",[4302,4303,4304],"h4",{"id":4304},"建立复制账号",[666,4306,4307],{},"在 主库（Source） 执行：",[676,4309,4311],{"className":678,"code":4310,"filename":680,"language":681,"meta":682,"style":682},"CREATE USER 'repl'@'38.255.16.190' IDENTIFIED BY 'digvps.com';\n\nGRANT REPLICATION SLAVE ON *.* TO 'repl'@'38.255.16.190';\n\nFLUSH PRIVILEGES;\n",[684,4312,4313,4334,4338,4368,4372],{"__ignoreMap":682},[687,4314,4315,4317,4320,4323,4326,4329,4332],{"class":689,"line":690},[687,4316,3894],{"class":1220},[687,4318,4319],{"class":708}," USER",[687,4321,4322],{"class":708}," 'repl'@'38.255.16.190'",[687,4324,4325],{"class":708}," IDENTIFIED",[687,4327,4328],{"class":708}," BY",[687,4330,4331],{"class":708}," 'digvps.com'",[687,4333,3572],{"class":809},[687,4335,4336],{"class":689,"line":697},[687,4337,716],{"emptyLinePlaceholder":715},[687,4339,4340,4343,4346,4349,4352,4356,4358,4361,4364,4366],{"class":689,"line":712},[687,4341,4342],{"class":1220},"GRANT",[687,4344,4345],{"class":708}," REPLICATION",[687,4347,4348],{"class":708}," SLAVE",[687,4350,4351],{"class":708}," ON",[687,4353,4355],{"class":4354},"sgjR5"," *",[687,4357,862],{"class":708},[687,4359,4360],{"class":4354},"*",[687,4362,4363],{"class":708}," TO",[687,4365,4322],{"class":708},[687,4367,3572],{"class":809},[687,4369,4370],{"class":689,"line":719},[687,4371,716],{"emptyLinePlaceholder":715},[687,4373,4374,4377,4380],{"class":689,"line":725},[687,4375,4376],{"class":1220},"FLUSH",[687,4378,4379],{"class":708}," PRIVILEGES",[687,4381,3572],{"class":809},[4302,4383,4384],{"id":4384},"配置文件",[666,4386,4387],{},"配置主数据库服务器",[676,4389,4391],{"className":678,"code":4390,"filename":3488,"language":681,"meta":682,"style":682},"# 日志的名字，以mysql-bin开头\nlog_bin = mysql-bin\n\n# 动态参数，可以用 set 命令设置，但是记得需要及时在配置文件中修改，否则下次启动就。。。\n# 在整个群集中，这个 id 必须是唯一的\nserver_id = 1\n",[684,4392,4393,4398,4408,4412,4417,4422],{"__ignoreMap":682},[687,4394,4395],{"class":689,"line":690},[687,4396,4397],{"class":693},"# 日志的名字，以mysql-bin开头\n",[687,4399,4400,4403,4405],{"class":689,"line":697},[687,4401,4402],{"class":1220},"log_bin",[687,4404,3719],{"class":708},[687,4406,4407],{"class":708}," mysql-bin\n",[687,4409,4410],{"class":689,"line":712},[687,4411,716],{"emptyLinePlaceholder":715},[687,4413,4414],{"class":689,"line":719},[687,4415,4416],{"class":693},"# 动态参数，可以用 set 命令设置，但是记得需要及时在配置文件中修改，否则下次启动就。。。\n",[687,4418,4419],{"class":689,"line":725},[687,4420,4421],{"class":693},"# 在整个群集中，这个 id 必须是唯一的\n",[687,4423,4424,4427,4429],{"class":689,"line":731},[687,4425,4426],{"class":1220},"server_id",[687,4428,3719],{"class":708},[687,4430,1044],{"class":704},[666,4432,4433],{},"配置从数据库服务器",[676,4435,4437],{"className":678,"code":4436,"filename":3488,"language":681,"meta":682,"style":682},"log_bin = mysql-bin\nserver_id = 2\n# 配置中继日志名，这里注意，默认情况下是主机名，如果运维改了机器名字就。。。\nrelay_log = mysql-relay-bin\n# 可选，开启这个参数可以把中继日志记录到本机的二进制日志，这样可以进行链路复制，其他服务器可以从从服务器同步数据。\nlog_slave_update = on \n# 可选，禁止写操作\nread_only = on \n",[684,4438,4439,4447,4455,4460,4470,4475,4488,4493],{"__ignoreMap":682},[687,4440,4441,4443,4445],{"class":689,"line":690},[687,4442,4402],{"class":1220},[687,4444,3719],{"class":708},[687,4446,4407],{"class":708},[687,4448,4449,4451,4453],{"class":689,"line":697},[687,4450,4426],{"class":1220},[687,4452,3719],{"class":708},[687,4454,1897],{"class":704},[687,4456,4457],{"class":689,"line":712},[687,4458,4459],{"class":693},"# 配置中继日志名，这里注意，默认情况下是主机名，如果运维改了机器名字就。。。\n",[687,4461,4462,4465,4467],{"class":689,"line":719},[687,4463,4464],{"class":1220},"relay_log",[687,4466,3719],{"class":708},[687,4468,4469],{"class":708}," mysql-relay-bin\n",[687,4471,4472],{"class":689,"line":725},[687,4473,4474],{"class":693},"# 可选，开启这个参数可以把中继日志记录到本机的二进制日志，这样可以进行链路复制，其他服务器可以从从服务器同步数据。\n",[687,4476,4477,4480,4482,4485],{"class":689,"line":731},[687,4478,4479],{"class":1220},"log_slave_update",[687,4481,3719],{"class":708},[687,4483,4484],{"class":708}," on",[687,4486,4487],{"class":809}," \n",[687,4489,4490],{"class":689,"line":737},[687,4491,4492],{"class":693},"# 可选，禁止写操作\n",[687,4494,4495,4498,4500],{"class":689,"line":743},[687,4496,4497],{"class":1220},"read_only",[687,4499,3719],{"class":708},[687,4501,4502],{"class":708}," on\n",[4302,4504,4505],{"id":4505},"初始化从服务器数据",[666,4507,4508],{},"备份主库",[676,4510,4512],{"className":678,"code":4511,"filename":680,"language":681,"meta":682,"style":682},"mysqldump --single-transaction --master-data --triggers  --routines --all-databases > all.sql\nxtrabackup --slave-info\n",[684,4513,4514,4539],{"__ignoreMap":682},[687,4515,4516,4519,4522,4525,4528,4531,4534,4536],{"class":689,"line":690},[687,4517,4518],{"class":1220},"mysqldump",[687,4520,4521],{"class":704}," --single-transaction",[687,4523,4524],{"class":704}," --master-data",[687,4526,4527],{"class":704}," --triggers",[687,4529,4530],{"class":704},"  --routines",[687,4532,4533],{"class":704}," --all-databases",[687,4535,1752],{"class":809},[687,4537,4538],{"class":708},"all.sql\n",[687,4540,4541,4544],{"class":689,"line":697},[687,4542,4543],{"class":1220},"xtrabackup",[687,4545,4546],{"class":704}," --slave-info\n",[666,4548,4549],{},"拷贝到从库",[676,4551,4553],{"className":678,"code":4552,"filename":680,"language":681,"meta":682,"style":682},"scp all.sql root@38.255.16.190:/root\n",[684,4554,4555],{"__ignoreMap":682},[687,4556,4557,4560,4563],{"class":689,"line":690},[687,4558,4559],{"class":1220},"scp",[687,4561,4562],{"class":708}," all.sql",[687,4564,4565],{"class":708}," root@38.255.16.190:/root\n",[666,4567,4568],{},"从库还原数据",[676,4570,4572],{"className":678,"code":4571,"filename":680,"language":681,"meta":682,"style":682},"root@silver:~# mysql \u003C all.sql\n",[684,4573,4574],{"__ignoreMap":682},[687,4575,4576,4579,4582,4585],{"class":689,"line":690},[687,4577,4578],{"class":1220},"root@silver:~#",[687,4580,4581],{"class":708}," mysql",[687,4583,4584],{"class":809}," \u003C ",[687,4586,4538],{"class":708},[4302,4588,4590],{"id":4589},"主库获取-binlog-位置","主库获取 binlog 位置",[666,4592,4593],{},"从刚才的备份文件中找到 MASTER_LOG_FILE和MASTER_LOG_POS",[4302,4595,4596],{"id":4596},"从库配置复制",[676,4598,4602],{"className":4599,"code":4600,"filename":1424,"language":4601,"meta":682,"style":682},"language-sql shiki shiki-themes one-light one-light one-dark-pro","-- 创建\nCHANGE MASTER TO\n  MASTER_HOST='38.255.16.139',\n  MASTER_USER='repl',\n  MASTER_PASSWORD='digvps.com',\n  MASTER_LOG_FILE='mysql-bin.000005',\n  MASTER_LOG_POS=3255;\n\n-- 查看状态\n\nSHOW MASTER STATUS;\nshow slave status \\G;\n\n-- 启动\nSTART SLAVE;\n\n-- 查看进程\n\nMariaDB [digvps]> show processlist;\n+----+-------------+-----------+--------+-----------+------+--------------------------------------------------------+------------------+----------+\n| Id | User        | Host      | db     | Command   | Time | State                                                  | Info             | Progress |\n+----+-------------+-----------+--------+-----------+------+--------------------------------------------------------+------------------+----------+\n| 33 | root        | localhost | digvps | Query     |    0 | starting                                               | show processlist |    0.000 |\n| 35 | system user |           | NULL   | Slave_SQL |   94 | Slave has read all relay log; waiting for more updates | NULL             |    0.000 |\n+----+-------------+-----------+--------+-----------+------+--------------------------------------------------------+------------------+----------+\n","sql",[684,4603,4604,4609,4620,4633,4645,4657,4669,4681,4685,4690,4694,4706,4717,4721,4726,4734,4738,4743,4747,4762,4770,4786,4792,4823,4880],{"__ignoreMap":682},[687,4605,4606],{"class":689,"line":690},[687,4607,4608],{"class":693},"-- 创建\n",[687,4610,4611,4614,4617],{"class":689,"line":697},[687,4612,4613],{"class":809},"CHANGE ",[687,4615,4616],{"class":993},"MASTER",[687,4618,4619],{"class":993}," TO\n",[687,4621,4622,4625,4627,4630],{"class":689,"line":712},[687,4623,4624],{"class":809},"  MASTER_HOST",[687,4626,797],{"class":796},[687,4628,4629],{"class":708},"'38.255.16.139'",[687,4631,4632],{"class":809},",\n",[687,4634,4635,4638,4640,4643],{"class":689,"line":719},[687,4636,4637],{"class":809},"  MASTER_USER",[687,4639,797],{"class":796},[687,4641,4642],{"class":708},"'repl'",[687,4644,4632],{"class":809},[687,4646,4647,4650,4652,4655],{"class":689,"line":725},[687,4648,4649],{"class":809},"  MASTER_PASSWORD",[687,4651,797],{"class":796},[687,4653,4654],{"class":708},"'digvps.com'",[687,4656,4632],{"class":809},[687,4658,4659,4662,4664,4667],{"class":689,"line":731},[687,4660,4661],{"class":809},"  MASTER_LOG_FILE",[687,4663,797],{"class":796},[687,4665,4666],{"class":708},"'mysql-bin.000005'",[687,4668,4632],{"class":809},[687,4670,4671,4674,4676,4679],{"class":689,"line":737},[687,4672,4673],{"class":809},"  MASTER_LOG_POS",[687,4675,797],{"class":796},[687,4677,4678],{"class":704},"3255",[687,4680,3572],{"class":809},[687,4682,4683],{"class":689,"line":743},[687,4684,716],{"emptyLinePlaceholder":715},[687,4686,4687],{"class":689,"line":749},[687,4688,4689],{"class":693},"-- 查看状态\n",[687,4691,4692],{"class":689,"line":755},[687,4693,716],{"emptyLinePlaceholder":715},[687,4695,4696,4699,4701,4704],{"class":689,"line":761},[687,4697,4698],{"class":809},"SHOW ",[687,4700,4616],{"class":993},[687,4702,4703],{"class":993}," STATUS",[687,4705,3572],{"class":809},[687,4707,4708,4711,4714],{"class":689,"line":767},[687,4709,4710],{"class":809},"show slave ",[687,4712,4713],{"class":993},"status",[687,4715,4716],{"class":809}," \\G;\n",[687,4718,4719],{"class":689,"line":773},[687,4720,716],{"emptyLinePlaceholder":715},[687,4722,4723],{"class":689,"line":778},[687,4724,4725],{"class":693},"-- 启动\n",[687,4727,4728,4731],{"class":689,"line":783},[687,4729,4730],{"class":993},"START",[687,4732,4733],{"class":809}," SLAVE;\n",[687,4735,4736],{"class":689,"line":789},[687,4737,716],{"emptyLinePlaceholder":715},[687,4739,4740],{"class":689,"line":822},[687,4741,4742],{"class":693},"-- 查看进程\n",[687,4744,4745],{"class":689,"line":843},[687,4746,716],{"emptyLinePlaceholder":715},[687,4748,4749,4752,4756,4759],{"class":689,"line":872},[687,4750,4751],{"class":809},"MariaDB ",[687,4753,4755],{"class":4754},"sGcBu","[digvps]",[687,4757,4758],{"class":796},">",[687,4760,4761],{"class":809}," show processlist;\n",[687,4763,4764,4767],{"class":689,"line":895},[687,4765,4766],{"class":809},"+",[687,4768,4769],{"class":693},"----+-------------+-----------+--------+-----------+------+--------------------------------------------------------+------------------+----------+\n",[687,4771,4772,4775,4778,4780,4783],{"class":689,"line":930},[687,4773,4774],{"class":809},"| Id | User        | Host      | db     | Command   | ",[687,4776,4777],{"class":993},"Time",[687,4779,2789],{"class":809},[687,4781,4782],{"class":993},"State",[687,4784,4785],{"class":809},"                                                  | Info             | Progress |\n",[687,4787,4788,4790],{"class":689,"line":952},[687,4789,4766],{"class":809},[687,4791,4769],{"class":693},[687,4793,4794,4797,4800,4802,4805,4808,4810,4813,4815,4817,4820],{"class":689,"line":957},[687,4795,4796],{"class":809},"| ",[687,4798,4799],{"class":704},"33",[687,4801,2789],{"class":809},[687,4803,4804],{"class":993},"root",[687,4806,4807],{"class":809},"        | localhost | digvps | Query     |    ",[687,4809,911],{"class":704},[687,4811,4812],{"class":809}," | starting                                               | show processlist |    ",[687,4814,911],{"class":704},[687,4816,862],{"class":809},[687,4818,4819],{"class":704},"000",[687,4821,4822],{"class":809}," |\n",[687,4824,4825,4827,4830,4832,4835,4838,4841,4844,4847,4850,4853,4856,4859,4862,4864,4867,4869,4872,4874,4876,4878],{"class":689,"line":968},[687,4826,4796],{"class":809},[687,4828,4829],{"class":704},"35",[687,4831,2789],{"class":809},[687,4833,4834],{"class":993},"system",[687,4836,4837],{"class":809}," user |           | ",[687,4839,4840],{"class":993},"NULL",[687,4842,4843],{"class":809},"   | Slave_SQL |   ",[687,4845,4846],{"class":704},"94",[687,4848,4849],{"class":809}," | Slave has ",[687,4851,4852],{"class":993},"read",[687,4854,4855],{"class":809}," all relay ",[687,4857,4858],{"class":993},"log",[687,4860,4861],{"class":809},"; waiting ",[687,4863,1333],{"class":993},[687,4865,4866],{"class":809}," more updates | ",[687,4868,4840],{"class":993},[687,4870,4871],{"class":809},"             |    ",[687,4873,911],{"class":704},[687,4875,862],{"class":809},[687,4877,4819],{"class":704},[687,4879,4822],{"class":809},[687,4881,4882,4884],{"class":689,"line":979},[687,4883,4766],{"class":809},[687,4885,4769],{"class":693},[656,4887,4889],{"id":4888},"mysql-gtid","📘 基于 GTID 的复制",[666,4891,4892],{},[3461,4893,3463,4894,3472,4898],{},[3465,4895,3471],{"href":4896,"rel":4897,"target":3470},"https://youtu.be/-FXDfP2MxSY",[3469],[3465,4899,3477],{"href":4900,"rel":4901,"target":3470},"https://www.bilibili.com/video/BV1MaQZBME5m/",[3469],[3479,4903],{"url":4904},"https://www.youtube.com/embed/-FXDfP2MxSY",[666,4906,4907],{},"GTID 既全局事务 ID（Global Transaction ID），其保证为每一个在主数据库上提交的事务在复制群集中可以生成一个唯一的 ID",[666,4909,4910],{},"GTID=source_id:transaction_id",[666,4912,4913],{},"从库会把已执行事务的 GTID 值发给主库，主库会发送未执行事务的 GTID 值，同一个事务只在指定的从库执行一次。",[4298,4915,4916,4919,4921,5006,5009,5062,5065,5067,5147,5149,5245,5248,5250,5326,5328,5340,5342,5356,5360],{"level":4300},[4302,4917,4304],{"id":4918},"建立复制账号-1",[666,4920,4307],{},[676,4922,4924],{"className":678,"code":4923,"filename":680,"language":681,"meta":682,"style":682},"CREATE USER 'repl'@'38.255.16.190' IDENTIFIED BY 'digvps.com';\n\nGRANT REPLICATION SLAVE ON *.* TO 'repl'@'38.255.16.190';\n\nFLUSH PRIVILEGES;\n\n# 可选，修改密码\nALTER USER 'repl'@'38.255.16.190' IDENTIFIED BY 'digvps.com';\n",[684,4925,4926,4942,4946,4968,4972,4980,4984,4989],{"__ignoreMap":682},[687,4927,4928,4930,4932,4934,4936,4938,4940],{"class":689,"line":690},[687,4929,3894],{"class":1220},[687,4931,4319],{"class":708},[687,4933,4322],{"class":708},[687,4935,4325],{"class":708},[687,4937,4328],{"class":708},[687,4939,4331],{"class":708},[687,4941,3572],{"class":809},[687,4943,4944],{"class":689,"line":697},[687,4945,716],{"emptyLinePlaceholder":715},[687,4947,4948,4950,4952,4954,4956,4958,4960,4962,4964,4966],{"class":689,"line":712},[687,4949,4342],{"class":1220},[687,4951,4345],{"class":708},[687,4953,4348],{"class":708},[687,4955,4351],{"class":708},[687,4957,4355],{"class":4354},[687,4959,862],{"class":708},[687,4961,4360],{"class":4354},[687,4963,4363],{"class":708},[687,4965,4322],{"class":708},[687,4967,3572],{"class":809},[687,4969,4970],{"class":689,"line":719},[687,4971,716],{"emptyLinePlaceholder":715},[687,4973,4974,4976,4978],{"class":689,"line":725},[687,4975,4376],{"class":1220},[687,4977,4379],{"class":708},[687,4979,3572],{"class":809},[687,4981,4982],{"class":689,"line":731},[687,4983,716],{"emptyLinePlaceholder":715},[687,4985,4986],{"class":689,"line":737},[687,4987,4988],{"class":693},"# 可选，修改密码\n",[687,4990,4991,4994,4996,4998,5000,5002,5004],{"class":689,"line":743},[687,4992,4993],{"class":1220},"ALTER",[687,4995,4319],{"class":708},[687,4997,4322],{"class":708},[687,4999,4325],{"class":708},[687,5001,4328],{"class":708},[687,5003,4331],{"class":708},[687,5005,3572],{"class":809},[666,5007,5008],{},"如已建立，可以检查下",[676,5010,5012],{"className":4599,"code":5011,"filename":1424,"language":4601,"meta":682,"style":682},"-- 查看用户\nSELECT user,host,plugin FROM mysql.user;\n\n-- 查看授权\nshow grants for repl@'%';\n",[684,5013,5014,5019,5038,5042,5047],{"__ignoreMap":682},[687,5015,5016],{"class":689,"line":690},[687,5017,5018],{"class":693},"-- 查看用户\n",[687,5020,5021,5024,5027,5030,5032,5034,5036],{"class":689,"line":697},[687,5022,5023],{"class":993},"SELECT",[687,5025,5026],{"class":809}," user,host,plugin ",[687,5028,5029],{"class":993},"FROM",[687,5031,4581],{"class":704},[687,5033,862],{"class":809},[687,5035,3903],{"class":704},[687,5037,3572],{"class":809},[687,5039,5040],{"class":689,"line":712},[687,5041,716],{"emptyLinePlaceholder":715},[687,5043,5044],{"class":689,"line":719},[687,5045,5046],{"class":693},"-- 查看授权\n",[687,5048,5049,5052,5054,5057,5060],{"class":689,"line":725},[687,5050,5051],{"class":809},"show grants ",[687,5053,1333],{"class":993},[687,5055,5056],{"class":809}," repl@",[687,5058,5059],{"class":708},"'%'",[687,5061,3572],{"class":809},[4302,5063,5064],{"id":5064},"主从服务器配置",[666,5066,4387],{},[676,5068,5070],{"className":678,"code":5069,"filename":3488,"language":681,"meta":682,"style":682},"# 日志的名字，以mysql-bin开头\nlog_bin = mysql-bin\n\n# 动态参数，可以用 set 命令设置，但是记得需要及时在配置文件中修改，否则下次启动就。。。\n# 在整个群集中，这个 id 必须是唯一的\nserver_id = 1\n\n# 必须\ngtid_mode = ON\n\n# 禁止执行那些“无法生成 GTID 或可能破坏 GTID 一致性”的 SQL。\n## 这样的话一些语句无法使用，例如 CREATE TABLE … SELECT ，必须先定义表。又或者  CREATE TEMPORARY TABLE 等。。。\nenforce_gtid_consistency=ON\n",[684,5071,5072,5076,5084,5088,5092,5096,5104,5108,5113,5123,5127,5132,5137],{"__ignoreMap":682},[687,5073,5074],{"class":689,"line":690},[687,5075,4397],{"class":693},[687,5077,5078,5080,5082],{"class":689,"line":697},[687,5079,4402],{"class":1220},[687,5081,3719],{"class":708},[687,5083,4407],{"class":708},[687,5085,5086],{"class":689,"line":712},[687,5087,716],{"emptyLinePlaceholder":715},[687,5089,5090],{"class":689,"line":719},[687,5091,4416],{"class":693},[687,5093,5094],{"class":689,"line":725},[687,5095,4421],{"class":693},[687,5097,5098,5100,5102],{"class":689,"line":731},[687,5099,4426],{"class":1220},[687,5101,3719],{"class":708},[687,5103,1044],{"class":704},[687,5105,5106],{"class":689,"line":737},[687,5107,716],{"emptyLinePlaceholder":715},[687,5109,5110],{"class":689,"line":743},[687,5111,5112],{"class":693},"# 必须\n",[687,5114,5115,5118,5120],{"class":689,"line":749},[687,5116,5117],{"class":1220},"gtid_mode",[687,5119,3719],{"class":708},[687,5121,5122],{"class":708}," ON\n",[687,5124,5125],{"class":689,"line":755},[687,5126,716],{"emptyLinePlaceholder":715},[687,5128,5129],{"class":689,"line":761},[687,5130,5131],{"class":693},"# 禁止执行那些“无法生成 GTID 或可能破坏 GTID 一致性”的 SQL。\n",[687,5133,5134],{"class":689,"line":767},[687,5135,5136],{"class":693},"## 这样的话一些语句无法使用，例如 CREATE TABLE … SELECT ，必须先定义表。又或者  CREATE TEMPORARY TABLE 等。。。\n",[687,5138,5139,5142,5144],{"class":689,"line":773},[687,5140,5141],{"class":792},"enforce_gtid_consistency",[687,5143,797],{"class":796},[687,5145,5146],{"class":708},"ON\n",[666,5148,4433],{},[676,5150,5152],{"className":678,"code":5151,"filename":3488,"language":681,"meta":682,"style":682},"log_bin = mysql-bin\nserver_id = 2\n\n# 集群中每台服务器都要开启 gtid_mode\ngtid_mode = ON\nenforce_gtid_consistency=ON\n\n# 配置中继日志名，这里注意，默认情况下是主机名，如果运维改了机器名字就。。。\nrelay_log = mysql-relay-bin\n\n# 可选，开启这个参数可以把中继日志记录到本机的二进制日志，这样可以进行链路复制，其他服务器可以从从服务器同步数据。\nlog_slave_update = on \n\n# 可选，禁止写操作\nread_only = on \n\n",[684,5153,5154,5162,5170,5174,5179,5187,5195,5199,5203,5211,5215,5219,5229,5233,5237],{"__ignoreMap":682},[687,5155,5156,5158,5160],{"class":689,"line":690},[687,5157,4402],{"class":1220},[687,5159,3719],{"class":708},[687,5161,4407],{"class":708},[687,5163,5164,5166,5168],{"class":689,"line":697},[687,5165,4426],{"class":1220},[687,5167,3719],{"class":708},[687,5169,1897],{"class":704},[687,5171,5172],{"class":689,"line":712},[687,5173,716],{"emptyLinePlaceholder":715},[687,5175,5176],{"class":689,"line":719},[687,5177,5178],{"class":693},"# 集群中每台服务器都要开启 gtid_mode\n",[687,5180,5181,5183,5185],{"class":689,"line":725},[687,5182,5117],{"class":1220},[687,5184,3719],{"class":708},[687,5186,5122],{"class":708},[687,5188,5189,5191,5193],{"class":689,"line":731},[687,5190,5141],{"class":792},[687,5192,797],{"class":796},[687,5194,5146],{"class":708},[687,5196,5197],{"class":689,"line":737},[687,5198,716],{"emptyLinePlaceholder":715},[687,5200,5201],{"class":689,"line":743},[687,5202,4459],{"class":693},[687,5204,5205,5207,5209],{"class":689,"line":749},[687,5206,4464],{"class":1220},[687,5208,3719],{"class":708},[687,5210,4469],{"class":708},[687,5212,5213],{"class":689,"line":755},[687,5214,716],{"emptyLinePlaceholder":715},[687,5216,5217],{"class":689,"line":761},[687,5218,4474],{"class":693},[687,5220,5221,5223,5225,5227],{"class":689,"line":767},[687,5222,4479],{"class":1220},[687,5224,3719],{"class":708},[687,5226,4484],{"class":708},[687,5228,4487],{"class":809},[687,5230,5231],{"class":689,"line":773},[687,5232,716],{"emptyLinePlaceholder":715},[687,5234,5235],{"class":689,"line":778},[687,5236,4492],{"class":693},[687,5238,5239,5241,5243],{"class":689,"line":783},[687,5240,4497],{"class":1220},[687,5242,3719],{"class":708},[687,5244,4502],{"class":708},[4302,5246,4505],{"id":5247},"初始化从服务器数据-1",[666,5249,4508],{},[676,5251,5253],{"className":678,"code":5252,"filename":680,"language":681,"meta":682,"style":682},"mysqldump \\\n--single-transaction \\\n--quick \\\n--source-data=2 \\\n--triggers \\\n--routines \\\n--events \\\n--set-gtid-purged=ON \\\n--all-databases \\\n> all.sql\n",[684,5254,5255,5262,5270,5277,5284,5291,5298,5305,5312,5319],{"__ignoreMap":682},[687,5256,5257,5259],{"class":689,"line":690},[687,5258,4518],{"class":1220},[687,5260,5261],{"class":700}," \\\n",[687,5263,5264,5267],{"class":689,"line":697},[687,5265,5266],{"class":809},"--single-transaction ",[687,5268,5269],{"class":700},"\\\n",[687,5271,5272,5275],{"class":689,"line":712},[687,5273,5274],{"class":809},"--quick ",[687,5276,5269],{"class":700},[687,5278,5279,5282],{"class":689,"line":719},[687,5280,5281],{"class":809},"--source-data=2 ",[687,5283,5269],{"class":700},[687,5285,5286,5289],{"class":689,"line":725},[687,5287,5288],{"class":809},"--triggers ",[687,5290,5269],{"class":700},[687,5292,5293,5296],{"class":689,"line":731},[687,5294,5295],{"class":809},"--routines ",[687,5297,5269],{"class":700},[687,5299,5300,5303],{"class":689,"line":737},[687,5301,5302],{"class":809},"--events ",[687,5304,5269],{"class":700},[687,5306,5307,5310],{"class":689,"line":743},[687,5308,5309],{"class":809},"--set-gtid-purged=ON ",[687,5311,5269],{"class":700},[687,5313,5314,5317],{"class":689,"line":749},[687,5315,5316],{"class":809},"--all-databases ",[687,5318,5269],{"class":700},[687,5320,5321,5324],{"class":689,"line":755},[687,5322,5323],{"class":809},"> ",[687,5325,4538],{"class":708},[666,5327,4549],{},[676,5329,5330],{"className":678,"code":4552,"filename":680,"language":681,"meta":682,"style":682},[684,5331,5332],{"__ignoreMap":682},[687,5333,5334,5336,5338],{"class":689,"line":690},[687,5335,4559],{"class":1220},[687,5337,4562],{"class":708},[687,5339,4565],{"class":708},[666,5341,4568],{},[676,5343,5344],{"className":678,"code":4571,"filename":680,"language":681,"meta":682,"style":682},[684,5345,5346],{"__ignoreMap":682},[687,5347,5348,5350,5352,5354],{"class":689,"line":690},[687,5349,4578],{"class":1220},[687,5351,4581],{"class":708},[687,5353,4584],{"class":809},[687,5355,4538],{"class":708},[4302,5357,5359],{"id":5358},"启动基于-gtid-的复制","启动基于 GTID 的复制",[676,5361,5363],{"className":4599,"code":5362,"filename":1424,"language":4601,"meta":682,"style":682},"-- 创建\nCHANGE REPLICATION SOURCE TO\n  SOURCE_HOST='38.255.16.139',\n  SOURCE_USER='repl',\n  SOURCE_PASSWORD='digvps.com',\n  SOURCE_AUTO_POSITION=1,\n  GET_SOURCE_PUBLIC_KEY=1;\n\n-- 启动复制\nSTART REPLICA;\n\n-- 停止复制\nSTOP REPLICA;\n\n-- 查看状态\nSHOW REPLICA STATUS\\G\n\n-- 可选，查更细的 worker 错误\nSELECT WORKER_ID, LAST_ERROR_NUMBER, LAST_ERROR_MESSAGE\nFROM performance_schema.replication_applier_status_by_worker\nWHERE LAST_ERROR_NUMBER \u003C> 0\\G\n\nCREATE USER IF NOT EXISTS 'repl'@'38.255.16.190' IDENTIFIED BY 'digvps.com';\n\n-- 可选，跳过 GTID\nSTOP REPLICA;\n\nSET GTID_NEXT='c5a56417-1e87-11f1-9b73-fa163ec99a28:13';\nBEGIN;\nCOMMIT;\nSET GTID_NEXT='AUTOMATIC';\n\nSTART REPLICA;\n\n-- 查看进程\nshow processlist;\n",[684,5364,5365,5369,5377,5388,5399,5410,5421,5432,5436,5441,5450,5454,5459,5468,5472,5476,5488,5492,5497,5504,5516,5531,5535,5569,5573,5578,5586,5590,5605,5612,5619,5632,5636,5644,5648,5652],{"__ignoreMap":682},[687,5366,5367],{"class":689,"line":690},[687,5368,4608],{"class":693},[687,5370,5371,5374],{"class":689,"line":697},[687,5372,5373],{"class":809},"CHANGE REPLICATION SOURCE ",[687,5375,5376],{"class":993},"TO\n",[687,5378,5379,5382,5384,5386],{"class":689,"line":712},[687,5380,5381],{"class":809},"  SOURCE_HOST",[687,5383,797],{"class":796},[687,5385,4629],{"class":708},[687,5387,4632],{"class":809},[687,5389,5390,5393,5395,5397],{"class":689,"line":719},[687,5391,5392],{"class":809},"  SOURCE_USER",[687,5394,797],{"class":796},[687,5396,4642],{"class":708},[687,5398,4632],{"class":809},[687,5400,5401,5404,5406,5408],{"class":689,"line":725},[687,5402,5403],{"class":809},"  SOURCE_PASSWORD",[687,5405,797],{"class":796},[687,5407,4654],{"class":708},[687,5409,4632],{"class":809},[687,5411,5412,5415,5417,5419],{"class":689,"line":731},[687,5413,5414],{"class":809},"  SOURCE_AUTO_POSITION",[687,5416,797],{"class":796},[687,5418,813],{"class":704},[687,5420,4632],{"class":809},[687,5422,5423,5426,5428,5430],{"class":689,"line":737},[687,5424,5425],{"class":809},"  GET_SOURCE_PUBLIC_KEY",[687,5427,797],{"class":796},[687,5429,813],{"class":704},[687,5431,3572],{"class":809},[687,5433,5434],{"class":689,"line":743},[687,5435,716],{"emptyLinePlaceholder":715},[687,5437,5438],{"class":689,"line":749},[687,5439,5440],{"class":693},"-- 启动复制\n",[687,5442,5443,5445,5448],{"class":689,"line":755},[687,5444,4730],{"class":993},[687,5446,5447],{"class":993}," REPLICA",[687,5449,3572],{"class":809},[687,5451,5452],{"class":689,"line":761},[687,5453,716],{"emptyLinePlaceholder":715},[687,5455,5456],{"class":689,"line":767},[687,5457,5458],{"class":693},"-- 停止复制\n",[687,5460,5461,5464,5466],{"class":689,"line":773},[687,5462,5463],{"class":993},"STOP",[687,5465,5447],{"class":993},[687,5467,3572],{"class":809},[687,5469,5470],{"class":689,"line":778},[687,5471,716],{"emptyLinePlaceholder":715},[687,5473,5474],{"class":689,"line":783},[687,5475,4689],{"class":693},[687,5477,5478,5480,5483,5485],{"class":689,"line":789},[687,5479,4698],{"class":809},[687,5481,5482],{"class":993},"REPLICA",[687,5484,4703],{"class":993},[687,5486,5487],{"class":809},"\\G\n",[687,5489,5490],{"class":689,"line":822},[687,5491,716],{"emptyLinePlaceholder":715},[687,5493,5494],{"class":689,"line":843},[687,5495,5496],{"class":693},"-- 可选，查更细的 worker 错误\n",[687,5498,5499,5501],{"class":689,"line":872},[687,5500,5023],{"class":993},[687,5502,5503],{"class":809}," WORKER_ID, LAST_ERROR_NUMBER, LAST_ERROR_MESSAGE\n",[687,5505,5506,5508,5511,5513],{"class":689,"line":895},[687,5507,5029],{"class":993},[687,5509,5510],{"class":704}," performance_schema",[687,5512,862],{"class":809},[687,5514,5515],{"class":704},"replication_applier_status_by_worker\n",[687,5517,5518,5521,5524,5527,5529],{"class":689,"line":930},[687,5519,5520],{"class":993},"WHERE",[687,5522,5523],{"class":809}," LAST_ERROR_NUMBER ",[687,5525,5526],{"class":796},"\u003C>",[687,5528,1014],{"class":704},[687,5530,5487],{"class":809},[687,5532,5533],{"class":689,"line":952},[687,5534,716],{"emptyLinePlaceholder":715},[687,5536,5537,5539,5541,5544,5547,5550,5553,5556,5559,5562,5565,5567],{"class":689,"line":957},[687,5538,3894],{"class":993},[687,5540,4319],{"class":993},[687,5542,5543],{"class":1220}," IF",[687,5545,5546],{"class":993}," NOT",[687,5548,5549],{"class":993}," EXISTS",[687,5551,5552],{"class":708}," 'repl'",[687,5554,5555],{"class":809},"@",[687,5557,5558],{"class":708},"'38.255.16.190'",[687,5560,5561],{"class":809}," IDENTIFIED ",[687,5563,5564],{"class":993},"BY",[687,5566,4331],{"class":708},[687,5568,3572],{"class":809},[687,5570,5571],{"class":689,"line":968},[687,5572,716],{"emptyLinePlaceholder":715},[687,5574,5575],{"class":689,"line":979},[687,5576,5577],{"class":693},"-- 可选，跳过 GTID\n",[687,5579,5580,5582,5584],{"class":689,"line":984},[687,5581,5463],{"class":993},[687,5583,5447],{"class":993},[687,5585,3572],{"class":809},[687,5587,5588],{"class":689,"line":990},[687,5589,716],{"emptyLinePlaceholder":715},[687,5591,5592,5595,5598,5600,5603],{"class":689,"line":1023},[687,5593,5594],{"class":993},"SET",[687,5596,5597],{"class":809}," GTID_NEXT",[687,5599,797],{"class":796},[687,5601,5602],{"class":708},"'c5a56417-1e87-11f1-9b73-fa163ec99a28:13'",[687,5604,3572],{"class":809},[687,5606,5607,5610],{"class":689,"line":1038},[687,5608,5609],{"class":993},"BEGIN",[687,5611,3572],{"class":809},[687,5613,5614,5617],{"class":689,"line":1047},[687,5615,5616],{"class":993},"COMMIT",[687,5618,3572],{"class":809},[687,5620,5621,5623,5625,5627,5630],{"class":689,"line":1053},[687,5622,5594],{"class":993},[687,5624,5597],{"class":809},[687,5626,797],{"class":796},[687,5628,5629],{"class":708},"'AUTOMATIC'",[687,5631,3572],{"class":809},[687,5633,5634],{"class":689,"line":1058},[687,5635,716],{"emptyLinePlaceholder":715},[687,5637,5638,5640,5642],{"class":689,"line":1067},[687,5639,4730],{"class":993},[687,5641,5447],{"class":993},[687,5643,3572],{"class":809},[687,5645,5646],{"class":689,"line":1072},[687,5647,716],{"emptyLinePlaceholder":715},[687,5649,5650],{"class":689,"line":1124},[687,5651,4742],{"class":693},[687,5653,5654],{"class":689,"line":1146},[687,5655,5656],{"class":809},"show processlist;\n",[656,5658,5660],{"id":5659},"Parallel-Replication","📘 并行复制（Parallel Replication）",[666,5662,5663],{},[3461,5664,3463,5665,3472,5669],{},[3465,5666,3471],{"href":5667,"rel":5668,"target":3470},"https://youtu.be/-FXDfP2MxSY?t=487",[3469],[3465,5670,3477],{"href":5671,"rel":5672,"target":3470},"https://www.bilibili.com/video/BV1MaQZBME5m?t=487",[3469],[3479,5674],{"url":5675},"https://www.youtube.com/embed/-FXDfP2MxSY?start=487",[676,5677,5679],{"className":4599,"code":5678,"filename":1424,"language":4601,"meta":682,"style":682},"STOP REPLICA;\n\n-- 控制 SQL 线程的并发 worker 数量（默认开启）\nSHOW VARIABLES LIKE 'replica_parallel_workers';\nSET GLOBAL replica_parallel_workers = 4;\n\n-- 保证从库提交顺序和主库一致（默认开启）\nSHOW VARIABLES LIKE 'replica_preserve_commit_order';\nSET GLOBAL replica_preserve_commit_order = ON;\nSTART REPLICA;\n",[684,5680,5681,5689,5693,5698,5711,5728,5732,5737,5748,5763],{"__ignoreMap":682},[687,5682,5683,5685,5687],{"class":689,"line":690},[687,5684,5463],{"class":993},[687,5686,5447],{"class":993},[687,5688,3572],{"class":809},[687,5690,5691],{"class":689,"line":697},[687,5692,716],{"emptyLinePlaceholder":715},[687,5694,5695],{"class":689,"line":712},[687,5696,5697],{"class":693},"-- 控制 SQL 线程的并发 worker 数量（默认开启）\n",[687,5699,5700,5703,5706,5709],{"class":689,"line":719},[687,5701,5702],{"class":809},"SHOW VARIABLES ",[687,5704,5705],{"class":993},"LIKE",[687,5707,5708],{"class":708}," 'replica_parallel_workers'",[687,5710,3572],{"class":809},[687,5712,5713,5715,5718,5721,5723,5726],{"class":689,"line":725},[687,5714,5594],{"class":993},[687,5716,5717],{"class":993}," GLOBAL",[687,5719,5720],{"class":809}," replica_parallel_workers ",[687,5722,797],{"class":796},[687,5724,5725],{"class":704}," 4",[687,5727,3572],{"class":809},[687,5729,5730],{"class":689,"line":731},[687,5731,716],{"emptyLinePlaceholder":715},[687,5733,5734],{"class":689,"line":737},[687,5735,5736],{"class":693},"-- 保证从库提交顺序和主库一致（默认开启）\n",[687,5738,5739,5741,5743,5746],{"class":689,"line":743},[687,5740,5702],{"class":809},[687,5742,5705],{"class":993},[687,5744,5745],{"class":708}," 'replica_preserve_commit_order'",[687,5747,3572],{"class":809},[687,5749,5750,5752,5754,5757,5759,5761],{"class":689,"line":749},[687,5751,5594],{"class":993},[687,5753,5717],{"class":993},[687,5755,5756],{"class":809}," replica_preserve_commit_order ",[687,5758,797],{"class":796},[687,5760,4351],{"class":993},[687,5762,3572],{"class":809},[687,5764,5765,5767,5769],{"class":689,"line":755},[687,5766,4730],{"class":993},[687,5768,5447],{"class":993},[687,5770,3572],{"class":809},[656,5772,5774],{"id":5773},"mysql-semi-sync-replication","📘 半同步复制（Semi-Sync Replication）",[666,5776,5777],{},[3461,5778,3463,5779,3472,5783],{},[3465,5780,3471],{"href":5781,"rel":5782,"target":3470},"https://youtu.be/-FXDfP2MxSY?t=555",[3469],[3465,5784,3477],{"href":5785,"rel":5786,"target":3470},"https://www.bilibili.com/video/BV1MaQZBME5m?t=555",[3469],[3479,5788],{"url":5789},"https://www.youtube.com/embed/-FXDfP2MxSY?start=555",[661,5791,5792],{"id":5792},"概念",[666,5794,5795],{},[3461,5796,5797],{},"主库提交事务时，至少有一个从库收到 binlog 才返回成功。",[666,5799,5800],{},"普通复制：",[676,5802,5805],{"className":5803,"code":5804,"language":4251},[4249],"client\n  ↓\nmaster commit\n  ↓\n返回客户端\n  ↓\nreplica 收到 binlog\n",[684,5806,5804],{"__ignoreMap":682},[666,5808,5809],{},"半同步复制：至少一个 replica 收到 binlog",[676,5811,5814],{"className":5812,"code":5813,"language":4251},[4249],"client\n  ↓\nmaster commit\n  ↓\n发送 binlog\n  ↓\nreplica ACK\n  ↓\nmaster 返回客户端\n",[684,5815,5813],{"__ignoreMap":682},[661,5817,5818],{"id":5818},"两种提交模式",[676,5820,5822],{"className":4599,"code":5821,"filename":1424,"language":4601,"meta":682,"style":682},"-- 控制参数\nSHOW VARIABLES LIKE 'rpl_semi_sync_source_wait_point';\n",[684,5823,5824,5829],{"__ignoreMap":682},[687,5825,5826],{"class":689,"line":690},[687,5827,5828],{"class":693},"-- 控制参数\n",[687,5830,5831,5833,5835,5838],{"class":689,"line":697},[687,5832,5702],{"class":809},[687,5834,5705],{"class":993},[687,5836,5837],{"class":708}," 'rpl_semi_sync_source_wait_point'",[687,5839,3572],{"class":809},[666,5841,5842],{},"AFTER_SYNC（默认，推荐）",[666,5844,5845],{},"先同步，再提交，主库 crash 时，至少有一个从库拥有完整事务。",[676,5847,5850],{"className":5848,"code":5849,"language":4251},[4249],"client\n  │\n  │ commit\n  ▼\nmaster 写 binlog\n  │\n  ▼\n发送给 replica\n  │\n  ▼\nreplica 写入 relay log\n  │\n  ▼\nreplica ACK\n  │\n  ▼\nmaster commit\n  │\n  ▼\n返回客户端\n",[684,5851,5849],{"__ignoreMap":682},[666,5853,5854],{},"AFTER_COMMIT",[666,5856,5857],{},"先提交，再等待 ACK。如果这时 master crash，replica 还没收到 binlog，就可能事务已经返回客户端但从库没有。",[676,5859,5862],{"className":5860,"code":5861,"language":4251},[4249],"client\n  │\n  │ commit\n  ▼\nmaster 写 binlog\n  │\n  ▼\nmaster commit\n  │\n  ▼\n返回客户端\n  │\n  ▼\n发送给 replica\n  │\n  ▼\nreplica ACK\n",[684,5863,5861],{"__ignoreMap":682},[661,5865,5866],{"id":5866},"配置",[4298,5868,5869,5872,6036,6082,6085,6183],{"level":4300},[4302,5870,5871],{"id":5871},"主库配置",[676,5873,5875],{"className":4599,"code":5874,"filename":1424,"language":4601,"meta":682,"style":682},"-- 查看插件\nSHOW PLUGINS;\n     \n-- 安装半同步插件\n-- 如果没看到 semisync_source 和 semisync_replica\nINSTALL PLUGIN rpl_semi_sync_source\nSONAME 'semisync_source.so';\n\n-- 开启半同步\nSET GLOBAL rpl_semi_sync_source_enabled = ON;\n    \n-- 设置至少一个从库确认\nSET GLOBAL rpl_semi_sync_source_wait_for_replica_count = 1;\n    \n-- 设置等待 ACK 的时间\nSET GLOBAL rpl_semi_sync_source_timeout = 1000\n\n-- 验证\n-- 验证是否启用成功\nSHOW STATUS LIKE 'Rpl_semi_sync_source_status';\n-- 查看当前有多少从库参与：\nSHOW STATUS LIKE 'Rpl_semi_sync_source_clients';\n",[684,5876,5877,5882,5887,5892,5897,5902,5907,5917,5921,5926,5941,5946,5951,5966,5970,5975,5989,5993,5998,6003,6018,6023],{"__ignoreMap":682},[687,5878,5879],{"class":689,"line":690},[687,5880,5881],{"class":693},"-- 查看插件\n",[687,5883,5884],{"class":689,"line":697},[687,5885,5886],{"class":809},"SHOW PLUGINS;\n",[687,5888,5889],{"class":689,"line":712},[687,5890,5891],{"class":809},"     \n",[687,5893,5894],{"class":689,"line":719},[687,5895,5896],{"class":693},"-- 安装半同步插件\n",[687,5898,5899],{"class":689,"line":725},[687,5900,5901],{"class":693},"-- 如果没看到 semisync_source 和 semisync_replica\n",[687,5903,5904],{"class":689,"line":731},[687,5905,5906],{"class":809},"INSTALL PLUGIN rpl_semi_sync_source\n",[687,5908,5909,5912,5915],{"class":689,"line":737},[687,5910,5911],{"class":809},"SONAME ",[687,5913,5914],{"class":708},"'semisync_source.so'",[687,5916,3572],{"class":809},[687,5918,5919],{"class":689,"line":743},[687,5920,716],{"emptyLinePlaceholder":715},[687,5922,5923],{"class":689,"line":749},[687,5924,5925],{"class":693},"-- 开启半同步\n",[687,5927,5928,5930,5932,5935,5937,5939],{"class":689,"line":755},[687,5929,5594],{"class":993},[687,5931,5717],{"class":993},[687,5933,5934],{"class":809}," rpl_semi_sync_source_enabled ",[687,5936,797],{"class":796},[687,5938,4351],{"class":993},[687,5940,3572],{"class":809},[687,5942,5943],{"class":689,"line":761},[687,5944,5945],{"class":809},"    \n",[687,5947,5948],{"class":689,"line":767},[687,5949,5950],{"class":693},"-- 设置至少一个从库确认\n",[687,5952,5953,5955,5957,5960,5962,5964],{"class":689,"line":773},[687,5954,5594],{"class":993},[687,5956,5717],{"class":993},[687,5958,5959],{"class":809}," rpl_semi_sync_source_wait_for_replica_count ",[687,5961,797],{"class":796},[687,5963,2903],{"class":704},[687,5965,3572],{"class":809},[687,5967,5968],{"class":689,"line":778},[687,5969,5945],{"class":809},[687,5971,5972],{"class":689,"line":783},[687,5973,5974],{"class":693},"-- 设置等待 ACK 的时间\n",[687,5976,5977,5979,5981,5984,5986],{"class":689,"line":789},[687,5978,5594],{"class":993},[687,5980,5717],{"class":993},[687,5982,5983],{"class":809}," rpl_semi_sync_source_timeout ",[687,5985,797],{"class":796},[687,5987,5988],{"class":704}," 1000\n",[687,5990,5991],{"class":689,"line":822},[687,5992,716],{"emptyLinePlaceholder":715},[687,5994,5995],{"class":689,"line":843},[687,5996,5997],{"class":693},"-- 验证\n",[687,5999,6000],{"class":689,"line":872},[687,6001,6002],{"class":693},"-- 验证是否启用成功\n",[687,6004,6005,6007,6010,6013,6016],{"class":689,"line":895},[687,6006,4698],{"class":809},[687,6008,6009],{"class":993},"STATUS",[687,6011,6012],{"class":993}," LIKE",[687,6014,6015],{"class":708}," 'Rpl_semi_sync_source_status'",[687,6017,3572],{"class":809},[687,6019,6020],{"class":689,"line":930},[687,6021,6022],{"class":693},"-- 查看当前有多少从库参与：\n",[687,6024,6025,6027,6029,6031,6034],{"class":689,"line":952},[687,6026,4698],{"class":809},[687,6028,6009],{"class":993},[687,6030,6012],{"class":993},[687,6032,6033],{"class":708}," 'Rpl_semi_sync_source_clients'",[687,6035,3572],{"class":809},[676,6037,6041],{"className":6038,"code":6039,"filename":3488,"language":6040,"meta":682,"style":682},"language-ini shiki shiki-themes one-light one-light one-dark-pro","plugin_load_add = semisync_source.so\nrpl_semi_sync_source_enabled = ON\nrpl_semi_sync_source_wait_for_replica_count = 1\nrpl_semi_sync_source_timeout = 1000\n","ini",[684,6042,6043,6055,6064,6073],{"__ignoreMap":682},[687,6044,6045,6049,6051],{"class":689,"line":690},[687,6046,6048],{"class":6047},"sT2zi","plugin_load_add",[687,6050,3719],{"class":809},[687,6052,6054],{"class":6053},"sN1Ec"," semisync_source.so\n",[687,6056,6057,6060,6062],{"class":689,"line":697},[687,6058,6059],{"class":6047},"rpl_semi_sync_source_enabled",[687,6061,3719],{"class":809},[687,6063,5122],{"class":6053},[687,6065,6066,6069,6071],{"class":689,"line":712},[687,6067,6068],{"class":6047},"rpl_semi_sync_source_wait_for_replica_count",[687,6070,3719],{"class":809},[687,6072,1044],{"class":6053},[687,6074,6075,6078,6080],{"class":689,"line":719},[687,6076,6077],{"class":6047},"rpl_semi_sync_source_timeout",[687,6079,3719],{"class":809},[687,6081,5988],{"class":6053},[4302,6083,6084],{"id":6084},"从库配置",[676,6086,6088],{"className":4599,"code":6087,"filename":1424,"language":4601,"meta":682,"style":682},"-- 安装插件\nINSTALL PLUGIN rpl_semi_sync_replica\nSONAME 'semisync_replica.so';\n\n-- 启用半同步\nSET GLOBAL rpl_semi_sync_replica_enabled = ON;\n    \n-- 重启复制\nSTOP REPLICA;\nSTART REPLICA;\n\n-- 验证\n-- 验证是否启用成功\nSHOW STATUS LIKE 'Rpl_semi_sync_replica_status';\n",[684,6089,6090,6095,6100,6109,6113,6118,6133,6137,6142,6150,6158,6162,6166,6170],{"__ignoreMap":682},[687,6091,6092],{"class":689,"line":690},[687,6093,6094],{"class":693},"-- 安装插件\n",[687,6096,6097],{"class":689,"line":697},[687,6098,6099],{"class":809},"INSTALL PLUGIN rpl_semi_sync_replica\n",[687,6101,6102,6104,6107],{"class":689,"line":712},[687,6103,5911],{"class":809},[687,6105,6106],{"class":708},"'semisync_replica.so'",[687,6108,3572],{"class":809},[687,6110,6111],{"class":689,"line":719},[687,6112,716],{"emptyLinePlaceholder":715},[687,6114,6115],{"class":689,"line":725},[687,6116,6117],{"class":693},"-- 启用半同步\n",[687,6119,6120,6122,6124,6127,6129,6131],{"class":689,"line":731},[687,6121,5594],{"class":993},[687,6123,5717],{"class":993},[687,6125,6126],{"class":809}," rpl_semi_sync_replica_enabled ",[687,6128,797],{"class":796},[687,6130,4351],{"class":993},[687,6132,3572],{"class":809},[687,6134,6135],{"class":689,"line":737},[687,6136,5945],{"class":809},[687,6138,6139],{"class":689,"line":743},[687,6140,6141],{"class":693},"-- 重启复制\n",[687,6143,6144,6146,6148],{"class":689,"line":749},[687,6145,5463],{"class":993},[687,6147,5447],{"class":993},[687,6149,3572],{"class":809},[687,6151,6152,6154,6156],{"class":689,"line":755},[687,6153,4730],{"class":993},[687,6155,5447],{"class":993},[687,6157,3572],{"class":809},[687,6159,6160],{"class":689,"line":761},[687,6161,716],{"emptyLinePlaceholder":715},[687,6163,6164],{"class":689,"line":767},[687,6165,5997],{"class":693},[687,6167,6168],{"class":689,"line":773},[687,6169,6002],{"class":693},[687,6171,6172,6174,6176,6178,6181],{"class":689,"line":778},[687,6173,4698],{"class":809},[687,6175,6009],{"class":993},[687,6177,6012],{"class":993},[687,6179,6180],{"class":708}," 'Rpl_semi_sync_replica_status'",[687,6182,3572],{"class":809},[676,6184,6186],{"className":6038,"code":6185,"filename":3488,"language":6040,"meta":682,"style":682},"plugin_load_add = semisync_replica.so\nrpl_semi_sync_replica_enabled = ON\n",[684,6187,6188,6197],{"__ignoreMap":682},[687,6189,6190,6192,6194],{"class":689,"line":690},[687,6191,6048],{"class":6047},[687,6193,3719],{"class":809},[687,6195,6196],{"class":6053}," semisync_replica.so\n",[687,6198,6199,6202,6204],{"class":689,"line":697},[687,6200,6201],{"class":6047},"rpl_semi_sync_replica_enabled",[687,6203,3719],{"class":809},[687,6205,5122],{"class":6053},[656,6207,6209],{"id":6208},"查询优化","📘 查询优化",[661,6211,6212],{"id":6212},"设置参数",[676,6214,6216],{"className":4599,"code":6215,"filename":1424,"language":4601,"meta":682,"style":682},"-- 启动停止记录慢查询日志\nshow variables like 'slow_query_log'\nset global slow_query_log on\n     \n-- 指定记录了慢查询日志的存储路径及文件\nshow variables like 'slow_query_log_file'\n     \n-- 是否记录未适用索引的 SQL\nshow variables like 'log_queries_not_using_indexes'\nset global log_queries_not_using_indexes on\n\n-- 指定记录慢查询日志 SQL 执行时间的阈值\nshow variables like 'long_query_time'\n",[684,6217,6218,6223,6234,6247,6251,6256,6265,6269,6274,6283,6294,6298,6303],{"__ignoreMap":682},[687,6219,6220],{"class":689,"line":690},[687,6221,6222],{"class":693},"-- 启动停止记录慢查询日志\n",[687,6224,6225,6228,6231],{"class":689,"line":697},[687,6226,6227],{"class":809},"show variables ",[687,6229,6230],{"class":993},"like",[687,6232,6233],{"class":708}," 'slow_query_log'\n",[687,6235,6236,6238,6241,6244],{"class":689,"line":712},[687,6237,701],{"class":993},[687,6239,6240],{"class":993}," global",[687,6242,6243],{"class":809}," slow_query_log ",[687,6245,6246],{"class":993},"on\n",[687,6248,6249],{"class":689,"line":719},[687,6250,5891],{"class":809},[687,6252,6253],{"class":689,"line":725},[687,6254,6255],{"class":693},"-- 指定记录了慢查询日志的存储路径及文件\n",[687,6257,6258,6260,6262],{"class":689,"line":731},[687,6259,6227],{"class":809},[687,6261,6230],{"class":993},[687,6263,6264],{"class":708}," 'slow_query_log_file'\n",[687,6266,6267],{"class":689,"line":737},[687,6268,5891],{"class":809},[687,6270,6271],{"class":689,"line":743},[687,6272,6273],{"class":693},"-- 是否记录未适用索引的 SQL\n",[687,6275,6276,6278,6280],{"class":689,"line":749},[687,6277,6227],{"class":809},[687,6279,6230],{"class":993},[687,6281,6282],{"class":708}," 'log_queries_not_using_indexes'\n",[687,6284,6285,6287,6289,6292],{"class":689,"line":755},[687,6286,701],{"class":993},[687,6288,6240],{"class":993},[687,6290,6291],{"class":809}," log_queries_not_using_indexes ",[687,6293,6246],{"class":993},[687,6295,6296],{"class":689,"line":761},[687,6297,716],{"emptyLinePlaceholder":715},[687,6299,6300],{"class":689,"line":767},[687,6301,6302],{"class":693},"-- 指定记录慢查询日志 SQL 执行时间的阈值\n",[687,6304,6305,6307,6309],{"class":689,"line":773},[687,6306,6227],{"class":809},[687,6308,6230],{"class":993},[687,6310,6311],{"class":708}," 'long_query_time'\n",[661,6313,6314],{"id":6314},"查看慢查询语句",[666,6316,6317],{},"通过工具",[676,6319,6321],{"className":678,"code":6320,"filename":680,"language":681,"meta":682,"style":682},"# 安装  percona-toolkit \napt update\napt install percona-toolkit -y\n\n# 看最慢 SQL：\npt-query-digest --limit=20 /srv/data/mysql/slow.log\n",[684,6322,6323,6328,6334,6345,6349,6354],{"__ignoreMap":682},[687,6324,6325],{"class":689,"line":690},[687,6326,6327],{"class":693},"# 安装  percona-toolkit \n",[687,6329,6330,6332],{"class":689,"line":697},[687,6331,2702],{"class":1220},[687,6333,1259],{"class":708},[687,6335,6336,6338,6340,6343],{"class":689,"line":712},[687,6337,2702],{"class":1220},[687,6339,1280],{"class":708},[687,6341,6342],{"class":708}," percona-toolkit",[687,6344,2837],{"class":704},[687,6346,6347],{"class":689,"line":719},[687,6348,716],{"emptyLinePlaceholder":715},[687,6350,6351],{"class":689,"line":725},[687,6352,6353],{"class":693},"# 看最慢 SQL：\n",[687,6355,6356,6359,6362],{"class":689,"line":731},[687,6357,6358],{"class":1220},"pt-query-digest",[687,6360,6361],{"class":704}," --limit=20",[687,6363,6364],{"class":708}," /srv/data/mysql/slow.log\n",[666,6366,6367],{},"通过 SQL",[676,6369,6371],{"className":4599,"code":6370,"filename":1424,"language":4601,"meta":682,"style":682},"SELECT id,user,host,DB,command,time,state,info\nfrom information_schema.PROCESSLIST\nwhere TIME >=60\n",[684,6372,6373,6391,6404],{"__ignoreMap":682},[687,6374,6375,6377,6380,6383,6385,6388],{"class":689,"line":690},[687,6376,5023],{"class":993},[687,6378,6379],{"class":809}," id,user,host,DB,command,",[687,6381,6382],{"class":993},"time",[687,6384,4023],{"class":809},[687,6386,6387],{"class":993},"state",[687,6389,6390],{"class":809},",info\n",[687,6392,6393,6396,6399,6401],{"class":689,"line":697},[687,6394,6395],{"class":993},"from",[687,6397,6398],{"class":704}," information_schema",[687,6400,862],{"class":809},[687,6402,6403],{"class":704},"PROCESSLIST\n",[687,6405,6406,6409,6412,6415],{"class":689,"line":712},[687,6407,6408],{"class":993},"where",[687,6410,6411],{"class":993}," TIME",[687,6413,6414],{"class":796}," >=",[687,6416,6417],{"class":704},"60\n",[676,6419,6421],{"className":4599,"code":6420,"filename":1424,"language":4601,"meta":682,"style":682},"SELECT\n  DIGEST_TEXT,\n  COUNT_STAR AS exec_count,\n  ROUND(SUM_TIMER_WAIT/1000000000000,2) AS total_sec,\n  ROUND(AVG_TIMER_WAIT/1000000000000,4) AS avg_sec,\n  SUM_ROWS_SENT,\n  SUM_ROWS_EXAMINED\nFROM performance_schema.events_statements_summary_by_digest\nORDER BY SUM_TIMER_WAIT DESC\n  LIMIT 10;\n",[684,6422,6423,6428,6433,6444,6466,6486,6491,6496,6507,6518],{"__ignoreMap":682},[687,6424,6425],{"class":689,"line":690},[687,6426,6427],{"class":993},"SELECT\n",[687,6429,6430],{"class":689,"line":697},[687,6431,6432],{"class":809},"  DIGEST_TEXT,\n",[687,6434,6435,6438,6441],{"class":689,"line":712},[687,6436,6437],{"class":809},"  COUNT_STAR ",[687,6439,6440],{"class":993},"AS",[687,6442,6443],{"class":809}," exec_count,\n",[687,6445,6446,6449,6452,6455,6457,6459,6461,6463],{"class":689,"line":719},[687,6447,6448],{"class":700},"  ROUND",[687,6450,6451],{"class":809},"(SUM_TIMER_WAIT/",[687,6453,6454],{"class":704},"1000000000000",[687,6456,4023],{"class":809},[687,6458,4129],{"class":704},[687,6460,3924],{"class":809},[687,6462,6440],{"class":993},[687,6464,6465],{"class":809}," total_sec,\n",[687,6467,6468,6470,6473,6475,6477,6479,6481,6483],{"class":689,"line":725},[687,6469,6448],{"class":700},[687,6471,6472],{"class":809},"(AVG_TIMER_WAIT/",[687,6474,6454],{"class":704},[687,6476,4023],{"class":809},[687,6478,4300],{"class":704},[687,6480,3924],{"class":809},[687,6482,6440],{"class":993},[687,6484,6485],{"class":809}," avg_sec,\n",[687,6487,6488],{"class":689,"line":731},[687,6489,6490],{"class":809},"  SUM_ROWS_SENT,\n",[687,6492,6493],{"class":689,"line":737},[687,6494,6495],{"class":809},"  SUM_ROWS_EXAMINED\n",[687,6497,6498,6500,6502,6504],{"class":689,"line":743},[687,6499,5029],{"class":993},[687,6501,5510],{"class":704},[687,6503,862],{"class":809},[687,6505,6506],{"class":704},"events_statements_summary_by_digest\n",[687,6508,6509,6512,6515],{"class":689,"line":749},[687,6510,6511],{"class":993},"ORDER BY",[687,6513,6514],{"class":809}," SUM_TIMER_WAIT ",[687,6516,6517],{"class":993},"DESC\n",[687,6519,6520,6523,6526],{"class":689,"line":755},[687,6521,6522],{"class":993},"  LIMIT",[687,6524,6525],{"class":704}," 10",[687,6527,3572],{"class":809},[6529,6530,6531],"style",{},"html pre.shiki code .slzXe, html code.shiki .slzXe{--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-default:#A0A1A7;--shiki-default-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic}html pre.shiki code .sXhqU, html code.shiki .sXhqU{--shiki-light:#0184BC;--shiki-default:#0184BC;--shiki-dark:#56B6C2}html pre.shiki code .soiGB, html code.shiki .soiGB{--shiki-light:#986801;--shiki-default:#986801;--shiki-dark:#D19A66}html pre.shiki code .sBZeU, html code.shiki .sBZeU{--shiki-light:#50A14F;--shiki-default:#50A14F;--shiki-dark:#98C379}html pre.shiki code .s3_5o, html code.shiki .s3_5o{--shiki-light:#E45649;--shiki-default:#E45649;--shiki-dark:#E06C75}html pre.shiki code .sQ8GY, html code.shiki .sQ8GY{--shiki-light:#383A42;--shiki-default:#383A42;--shiki-dark:#56B6C2}html pre.shiki code .s0nYC, html code.shiki .s0nYC{--shiki-light:#E45649;--shiki-default:#E45649;--shiki-dark:#98C379}html pre.shiki code .skGaQ, html code.shiki .skGaQ{--shiki-light:#383A42;--shiki-default:#383A42;--shiki-dark:#ABB2BF}html pre.shiki code .sRLjE, html code.shiki .sRLjE{--shiki-light:#A626A4;--shiki-default:#A626A4;--shiki-dark:#C678DD}html pre.shiki code .sdhAt, html code.shiki .sdhAt{--shiki-light:#383A42;--shiki-light-font-style:inherit;--shiki-default:#383A42;--shiki-default-font-style:inherit;--shiki-dark:#E06C75;--shiki-dark-font-style:italic}html pre.shiki code .sgdWN, html code.shiki .sgdWN{--shiki-light:#4078F2;--shiki-default:#4078F2;--shiki-dark:#61AFEF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sfXbn, html code.shiki .sfXbn{--shiki-light:#E45649;--shiki-default:#E45649;--shiki-dark:#ABB2BF}html pre.shiki code .sgjR5, html code.shiki .sgjR5{--shiki-light:#E45649;--shiki-default:#E45649;--shiki-dark:#E5C07B}html pre.shiki code .sGcBu, html code.shiki .sGcBu{--shiki-light:#383A42;--shiki-default:#383A42;--shiki-dark:#E06C75}html pre.shiki code .sT2zi, html code.shiki .sT2zi{--shiki-light:#E45649;--shiki-default:#E45649;--shiki-dark:#C678DD}html pre.shiki code .sN1Ec, html code.shiki .sN1Ec{--shiki-light:#383A42;--shiki-default:#383A42;--shiki-dark:#98C379}",{"title":682,"searchDepth":697,"depth":697,"links":6533},[6534,6538,6543,6547,6548,6549,6550,6555],{"id":658,"depth":697,"text":659,"children":6535},[6536,6537],{"id":663,"depth":712,"text":664},{"id":2494,"depth":712,"text":2495},{"id":3456,"depth":697,"text":3457,"children":6539},[6540,6541,6542],{"id":3484,"depth":712,"text":3484},{"id":3757,"depth":712,"text":3757},{"id":4189,"depth":712,"text":4189},{"id":4209,"depth":697,"text":4210,"children":6544},[6545,6546],{"id":4213,"depth":712,"text":4213},{"id":4241,"depth":712,"text":4242},{"id":4256,"depth":697,"text":4257},{"id":4888,"depth":697,"text":4889},{"id":5659,"depth":697,"text":5660},{"id":5773,"depth":697,"text":5774,"children":6551},[6552,6553,6554],{"id":5792,"depth":712,"text":5792},{"id":5818,"depth":712,"text":5818},{"id":5866,"depth":712,"text":5866},{"id":6208,"depth":697,"text":6209,"children":6556},[6557,6558],{"id":6212,"depth":712,"text":6212},{"id":6314,"depth":712,"text":6314},"MySQL 相关资料","md",null,{"date":6563},"2026-03-12",{"icon":56},{"title":53,"description":6559},"hF_LGAfW1cZQhes15O3bHLU-Mx1TwqL23cDElGMO7X0",[6568,6570],{"title":42,"path":43,"stem":44,"description":6569,"icon":45,"children":-1},"CloudFlare 相关教程",{"title":58,"path":59,"stem":60,"description":6571,"icon":61,"children":-1},"SQLite 相关资料",1777777460279]