{"id":184,"date":"2025-11-06T07:41:40","date_gmt":"2025-11-06T07:41:40","guid":{"rendered":"https:\/\/adveyer.com\/blog\/?p=184"},"modified":"2025-11-06T08:06:15","modified_gmt":"2025-11-06T08:06:15","slug":"ssh-uzerinden-mysql-veritabani-yedegi-almak","status":"publish","type":"post","link":"https:\/\/adveyer.com\/blog\/ssh-uzerinden-mysql-veritabani-yedegi-almak\/","title":{"rendered":"SSH \u00dczerinden MySQL Veritaban\u0131 Yede\u011fi Alma"},"content":{"rendered":"<h2 data-start=\"325\" data-end=\"372\">1) K\u0131sa \u00f6zet \u2014 hangi durumlarda hangi y\u00f6ntem<\/h2>\n<ul data-start=\"373\" data-end=\"933\">\n<li data-start=\"373\" data-end=\"463\">\n<p data-start=\"375\" data-end=\"463\"><strong data-start=\"375\" data-end=\"412\">K\u00fc\u00e7\u00fck\/orta boyutlu veritabanlar\u0131:<\/strong> <code data-start=\"413\" data-end=\"424\">mysqldump<\/code> + gzip \u2014 en yayg\u0131n, ta\u015f\u0131nmas\u0131 kolay.<\/p>\n<\/li>\n<li data-start=\"464\" data-end=\"600\">\n<p data-start=\"466\" data-end=\"600\"><strong data-start=\"466\" data-end=\"519\">B\u00fcy\u00fck veritabanlar\u0131 \/ y\u00fcksek performans ihtiyac\u0131:<\/strong> Percona XtraBackup veya LVM snapshot \u2014 online (hot) yedekleme, h\u0131zl\u0131 kurtarma.<\/p>\n<\/li>\n<li data-start=\"601\" data-end=\"699\">\n<p data-start=\"603\" data-end=\"699\"><strong data-start=\"603\" data-end=\"656\">H\u0131zl\u0131 tek komut ile uzak sunucudan yedek indirme:<\/strong> SSH ile <code data-start=\"665\" data-end=\"683\">mysqldump | gzip<\/code> pipe y\u00f6ntemi.<\/p>\n<\/li>\n<li data-start=\"700\" data-end=\"805\">\n<p data-start=\"702\" data-end=\"805\"><strong data-start=\"702\" data-end=\"715\">G\u00fcvenlik:<\/strong> Parolay\u0131 terminalde do\u011frudan yazma yerine <code data-start=\"758\" data-end=\"769\">~\/.my.cnf<\/code> kullan veya SSH anahtar ile eri\u015f.<\/p>\n<\/li>\n<li data-start=\"806\" data-end=\"933\">\n<p data-start=\"808\" data-end=\"933\"><strong data-start=\"808\" data-end=\"832\">Tutarl\u0131l\u0131k (InnoDB):<\/strong> <code data-start=\"833\" data-end=\"882\">--single-transaction --quick --skip-lock-tables<\/code> kullan. (MyISAM i\u00e7in <code data-start=\"904\" data-end=\"919\">--lock-tables<\/code> gerekebilir.)<\/p>\n<\/li>\n<\/ul>\n<h2 data-start=\"940\" data-end=\"1010\">2) Temel: tek komutla uzak sunucudan yedek alma (en s\u0131k kullan\u0131lan)<\/h2>\n<p data-start=\"1012\" data-end=\"1112\">Sunucuda root\/ssh eri\u015fimin varsa ve <code data-start=\"1048\" data-end=\"1059\">mysqldump<\/code> kurulu ise <strong data-start=\"1071\" data-end=\"1094\">local bilgisayar\u0131na<\/strong> yedek almak i\u00e7in:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<pre class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-bash\">ssh kullan\u0131c\u0131@uzak-sunucu-ip <span class=\"hljs-string\">\"mysqldump -u dbuser -p'dbpassword' --single-transaction --quick --routines --events --triggers dbname | gzip -c\"<\/span> &gt; \/local\/backups\/dbname_$(<span class=\"hljs-built_in\">date<\/span> +%F_%H%M).sql.gz\r\n<\/code><\/pre>\n<\/div>\n<p data-start=\"1318\" data-end=\"1334\"><strong data-start=\"1318\" data-end=\"1334\">A\u00e7\u0131klamalar:<\/strong><\/p>\n<ul data-start=\"1335\" data-end=\"1766\">\n<li data-start=\"1335\" data-end=\"1401\">\n<p data-start=\"1337\" data-end=\"1401\"><code data-start=\"1337\" data-end=\"1373\">ssh kullan\u0131c\u0131@uzak-sunucu-ip \"...\"<\/code> \u2014 uzak komutu \u00e7al\u0131\u015ft\u0131r\u0131r.<\/p>\n<\/li>\n<li data-start=\"1402\" data-end=\"1520\">\n<p data-start=\"1404\" data-end=\"1520\"><code data-start=\"1404\" data-end=\"1440\">mysqldump -u dbuser -p'dbpassword'<\/code> \u2014 dikkat: parola komutta g\u00f6r\u00fcn\u00fcr (g\u00fcvenlik riski). M\u00fcmk\u00fcnse <code data-start=\"1501\" data-end=\"1510\">.my.cnf<\/code> kullan.<\/p>\n<\/li>\n<li data-start=\"1521\" data-end=\"1606\">\n<p data-start=\"1523\" data-end=\"1606\"><code data-start=\"1523\" data-end=\"1553\">--single-transaction --quick<\/code> \u2014 InnoDB i\u00e7in tutarl\u0131, bellek kullan\u0131m\u0131n\u0131 d\u00fc\u015f\u00fcr\u00fcr.<\/p>\n<\/li>\n<li data-start=\"1607\" data-end=\"1687\">\n<p data-start=\"1609\" data-end=\"1687\"><code data-start=\"1609\" data-end=\"1641\">--routines --events --triggers<\/code> \u2014 prosed\u00fcr, olay ve trigger yakalamak i\u00e7in.<\/p>\n<\/li>\n<li data-start=\"1688\" data-end=\"1766\">\n<p data-start=\"1690\" data-end=\"1766\"><code data-start=\"1690\" data-end=\"1699\">gzip -c<\/code> \u2192 s\u0131k\u0131\u015ft\u0131r\u0131p STDOUT&#8217;a yaz\u0131yor, <code data-start=\"1731\" data-end=\"1734\">&gt;<\/code> ile local dosyaya kaydediyoruz.<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"1768\" data-end=\"1811\"><strong data-start=\"1768\" data-end=\"1811\">Daha g\u00fcvenli parola y\u00f6ntemi (\u00f6nerilen):<\/strong><\/p>\n<ul data-start=\"1812\" data-end=\"1882\">\n<li data-start=\"1812\" data-end=\"1882\">\n<p data-start=\"1814\" data-end=\"1882\">Uzak sunucuda <code data-start=\"1828\" data-end=\"1843\">\/root\/.my.cnf<\/code> veya <code data-start=\"1849\" data-end=\"1875\">\/home\/backupuser\/.my.cnf<\/code> i\u00e7ine:<\/p>\n<\/li>\n<\/ul>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\"><\/div>\n<pre class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-ini\"><span class=\"hljs-section\">[client]<\/span>\r\n<span class=\"hljs-attr\">user<\/span>=dbuser\r\n<span class=\"hljs-attr\">password<\/span>=DBPASSWORD\r\n<\/code><\/pre>\n<\/div>\n<p data-start=\"1935\" data-end=\"2032\">ve dosya izinleri <code data-start=\"1953\" data-end=\"1974\">chmod 600 ~\/.my.cnf<\/code> olmal\u0131. B\u00f6ylece mysqldump <code data-start=\"2001\" data-end=\"2005\">-p<\/code> sormazken parola g\u00f6r\u00fcnmez.<\/p>\n<p data-start=\"2034\" data-end=\"2070\">Komut \u00f6rne\u011fi (.my.cnf kullan\u0131larak):<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<pre class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-bash\">ssh backup@uzak <span class=\"hljs-string\">\"mysqldump --defaults-file=\/home\/backup\/.my.cnf --single-transaction --quick --routines --events --triggers dbname | gzip -c\"<\/span> &gt; dbname_$(<span class=\"hljs-built_in\">date<\/span> +%F).sql.gz\r\n<\/code><\/pre>\n<\/div>\n<h2 data-start=\"2259\" data-end=\"2335\">3) Alternatif: yerel bilgisayardan SSH t\u00fcneli a\u00e7\u0131p <code data-start=\"2313\" data-end=\"2324\">mysqldump<\/code> \u00e7al\u0131\u015ft\u0131rma<\/h2>\n<p data-start=\"2336\" data-end=\"2419\">E\u011fer MySQL portu (3306) sadece localhost&#8217;ta a\u00e7\u0131ksa ve SSH ile t\u00fcnel a\u00e7mak istersen:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<pre class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-bash\">ssh -L 33306:127.0.0.1:3306 kullan\u0131c\u0131@uzak-sunucu-ip -N<\/code> <code class=\"whitespace-pre! language-bash\"><\/code><code class=\"whitespace-pre! language-bash\"><span class=\"hljs-comment\"># yeni terminalde:<\/span><\/code> <code class=\"whitespace-pre! language-bash\"><\/code><code class=\"whitespace-pre! language-bash\">mysqldump -h 127.0.0.1 -P 33306 -u dbuser -p dbname | gzip -c &gt; dbname_$(<span class=\"hljs-built_in\">date<\/span> +%F).sql.gz\r\n<\/code><\/pre>\n<\/div>\n<ul data-start=\"2598\" data-end=\"2755\">\n<li data-start=\"2598\" data-end=\"2678\">\n<p data-start=\"2600\" data-end=\"2678\"><code data-start=\"2600\" data-end=\"2625\">-L 33306:127.0.0.1:3306<\/code> \u2192 local 33306 portunu uzak\u0131n 3306 portuna ba\u011flars\u0131n.<\/p>\n<\/li>\n<li data-start=\"2679\" data-end=\"2755\">\n<p data-start=\"2681\" data-end=\"2755\">T\u00fcnel kullan\u0131\u015fl\u0131ysa otomasyonun parolas\u0131z ba\u011flant\u0131 (my.cnf) ile yap\u0131lmal\u0131.<\/p>\n<\/li>\n<\/ul>\n<h2 data-start=\"2762\" data-end=\"2805\">4) Restore (geri y\u00fckleme) nas\u0131l yap\u0131l\u0131r?<\/h2>\n<p data-start=\"2807\" data-end=\"2842\">S\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f yede\u011fi geri y\u00fcklemek:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<pre class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-bash\">gunzip &lt; dbname_2025-11-06.sql.gz | mysql -u root -p dbname\r\n<span class=\"hljs-comment\"># veya do\u011frudan ssh \u00fczerinden:<\/span>\r\nssh kullan\u0131c\u0131@uzak <span class=\"hljs-string\">\"gunzip -c \/path\/to\/dbname.sql.gz | mysql -u dbuser -p'dbpass' dbname\"<\/span>\r\n<\/code><\/pre>\n<\/div>\n<p data-start=\"3038\" data-end=\"3081\">E\u011fer dosya b\u00fcy\u00fckse <code data-start=\"3057\" data-end=\"3061\">pv<\/code> ile izleyebilirsin:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<pre class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-bash\">pv dbname.sql.gz | gunzip | mysql -u root -p dbname\r\n<\/code><\/pre>\n<\/div>\n<h2 data-start=\"3152\" data-end=\"3209\">5) mysqldump se\u00e7enekleri \u2014 hangi durumda ne kullanmal\u0131<\/h2>\n<ul data-start=\"3211\" data-end=\"3831\">\n<li data-start=\"3211\" data-end=\"3325\">\n<p data-start=\"3213\" data-end=\"3325\"><code data-start=\"3213\" data-end=\"3235\">--single-transaction<\/code> : InnoDB i\u00e7in online ve tutarl\u0131 snapshot sa\u011flar (tablo kilidi yok). <strong data-start=\"3304\" data-end=\"3322\">Mutlaka kullan<\/strong>.<\/p>\n<\/li>\n<li data-start=\"3326\" data-end=\"3389\">\n<p data-start=\"3328\" data-end=\"3389\"><code data-start=\"3328\" data-end=\"3337\">--quick<\/code> : Dump s\u0131ras\u0131nda sat\u0131r sat\u0131r okur, belle\u011fi korur.<\/p>\n<\/li>\n<li data-start=\"3390\" data-end=\"3465\">\n<p data-start=\"3392\" data-end=\"3465\"><code data-start=\"3392\" data-end=\"3412\">--skip-lock-tables<\/code> : Tablolar\u0131 kilitlemeyi atlar (InnoDB ile uyumlu).<\/p>\n<\/li>\n<li data-start=\"3466\" data-end=\"3524\">\n<p data-start=\"3468\" data-end=\"3524\"><code data-start=\"3468\" data-end=\"3483\">--lock-tables<\/code> : MyISAM vb i\u00e7in tablo kilidi gerekir.<\/p>\n<\/li>\n<li data-start=\"3525\" data-end=\"3624\">\n<p data-start=\"3527\" data-end=\"3624\"><code data-start=\"3527\" data-end=\"3567\">--routines --events --triggers --gtids<\/code> : Stored procedure, event ve trigger&#8217;lar\u0131 da yedekler.<\/p>\n<\/li>\n<li data-start=\"3625\" data-end=\"3715\">\n<p data-start=\"3627\" data-end=\"3715\"><code data-start=\"3627\" data-end=\"3648\">--databases db1 db2<\/code> veya <code data-start=\"3654\" data-end=\"3671\">--all-databases<\/code> : birden fazla DB ya da t\u00fcm\u00fcn\u00fc dump eder.<\/p>\n<\/li>\n<li data-start=\"3716\" data-end=\"3831\">\n<p data-start=\"3718\" data-end=\"3831\"><code data-start=\"3718\" data-end=\"3756\">--single-transaction --master-data=2<\/code> : replika kurulumlar\u0131 i\u00e7in binlog pozisyonunu kaydetmek istiyorsan kullan.<\/p>\n<\/li>\n<\/ul>\n<h2 data-start=\"3838\" data-end=\"3898\">6) B\u00fcy\u00fck veritabanlar\u0131 \u2014 performans &amp; alternatif \u00e7\u00f6z\u00fcmler<\/h2>\n<ul data-start=\"3900\" data-end=\"4181\">\n<li data-start=\"3900\" data-end=\"4025\">\n<p data-start=\"3902\" data-end=\"4025\"><strong data-start=\"3902\" data-end=\"3924\">Percona XtraBackup<\/strong>: fiziksel (binary) hot-backup al\u0131r, InnoDB tablolar\u0131 i\u00e7in ideal, point-in-time recovery ile g\u00fc\u00e7l\u00fc.<\/p>\n<\/li>\n<li data-start=\"4026\" data-end=\"4109\">\n<p data-start=\"4028\" data-end=\"4109\"><strong data-start=\"4028\" data-end=\"4044\">LVM snapshot<\/strong>: disk seviyesinde snapshot al\u0131p ard\u0131ndan dosyalar\u0131 kopyalamak.<\/p>\n<\/li>\n<li data-start=\"4110\" data-end=\"4181\">\n<p data-start=\"4112\" data-end=\"4181\"><strong data-start=\"4112\" data-end=\"4135\">mydumper \/ myloader<\/strong>: paralel dump\/restore yaparak h\u0131z kazand\u0131r\u0131r.<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"4183\" data-end=\"4298\">E\u011fer DB boyutu GB\u2019larca ise <code data-start=\"4211\" data-end=\"4222\">mysqldump<\/code> yedekleme ve geri y\u00fckleme \u00e7ok uzun s\u00fcrebilir. O zaman XtraBackup tercih et.<\/p>\n<h2 data-start=\"4305\" data-end=\"4363\">7) Otomasyon: basit yedekleme script + cron + retention<\/h2>\n<p data-start=\"4365\" data-end=\"4415\"><strong data-start=\"4365\" data-end=\"4384\">backup_mysql.sh<\/strong> \u00f6rne\u011fi (uzak sunucudan \u00e7ekme):<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<pre class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-bash\"><span class=\"hljs-meta\">#!\/bin\/bash<\/span>\r\n<span class=\"hljs-comment\"># Konfig\u00fcrasyon<\/span>\r\nREMOTE_USER=backup\r\nREMOTE_HOST=1.2.3.4\r\nREMOTE_MYCNF=<span class=\"hljs-string\">\"\/home\/backup\/.my.cnf\"<\/span>\r\nDBNAME=yourdb\r\nBACKUP_DIR=\/backup\/mysql\r\nDATE=$(<span class=\"hljs-built_in\">date<\/span> +%F_%H%M)\r\nSSH_OPTS=<span class=\"hljs-string\">\"-o StrictHostKeyChecking=no\"<\/span>\r\n\r\n<span class=\"hljs-built_in\">mkdir<\/span> -p <span class=\"hljs-string\">\"<span class=\"hljs-variable\">$BACKUP_DIR<\/span><\/span>\"\r\n\r\n<span class=\"hljs-comment\"># Yedek al (uzakta mysqldump \u00e7al\u0131\u015ft\u0131r, gzip ile s\u0131k\u0131\u015ft\u0131r, local'e kaydet)<\/span>\r\nssh <span class=\"hljs-variable\">$SSH_OPTS<\/span> <span class=\"hljs-variable\">${REMOTE_USER}<\/span>@<span class=\"hljs-variable\">${REMOTE_HOST}<\/span> <span class=\"hljs-string\">\"mysqldump --defaults-file=<span class=\"hljs-variable\">${REMOTE_MYCNF}<\/span><\/span> --single-transaction --quick --routines --events --triggers <span class=\"hljs-variable\">${DBNAME}<\/span> | gzip -c\" &gt; <span class=\"hljs-variable\">${BACKUP_DIR}<\/span>\/<span class=\"hljs-variable\">${DBNAME}<\/span>_<span class=\"hljs-variable\">${DATE}<\/span>.sql.gz\r\n\r\n<span class=\"hljs-comment\"># Retention: 7 g\u00fcnden eski dosyalar\u0131 sil<\/span>\r\nfind <span class=\"hljs-variable\">${BACKUP_DIR}<\/span> -<span class=\"hljs-built_in\">type<\/span> f -name <span class=\"hljs-string\">\"<span class=\"hljs-variable\">${DBNAME}<\/span><\/span>_*.sql.gz\" -mtime +7 -<span class=\"hljs-built_in\">exec<\/span> <span class=\"hljs-built_in\">rm<\/span> {} \\;\r\n\r\n<span class=\"hljs-comment\"># Opsiyonel: yedek do\u011frulama (kontrol)<\/span>\r\n<span class=\"hljs-keyword\">if<\/span> gunzip -t <span class=\"hljs-variable\">${BACKUP_DIR}<\/span>\/<span class=\"hljs-variable\">${DBNAME}<\/span>_<span class=\"hljs-variable\">${DATE}<\/span>.sql.gz &gt;\/dev\/null 2&gt;&amp;1; <span class=\"hljs-keyword\">then<\/span>\r\n  <span class=\"hljs-built_in\">echo<\/span> <span class=\"hljs-string\">\"Backup OK: <span class=\"hljs-variable\">${DBNAME}<\/span><\/span>_<span class=\"hljs-variable\">${DATE}<\/span>.sql.gz\"\r\n<span class=\"hljs-keyword\">else<\/span>\r\n  <span class=\"hljs-built_in\">echo<\/span> <span class=\"hljs-string\">\"Backup FAILED: <span class=\"hljs-variable\">${DBNAME}<\/span><\/span>_<span class=\"hljs-variable\">${DATE}<\/span>.sql.gz\" &gt;&amp;2\r\n  <span class=\"hljs-comment\"># bildirim ekleyebilirsin (mail, slack vb.)<\/span>\r\n<span class=\"hljs-keyword\">fi<\/span>\r\n<\/code><\/pre>\n<\/div>\n<p data-start=\"5328\" data-end=\"5355\">Cron Sat\u0131r\u0131 (g\u00fcnl\u00fck 03:15):<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-cron\">15 3 * * * \/usr\/local\/bin\/backup_mysql.sh &gt;&gt; \/var\/log\/backup_mysql.log 2&gt;&amp;1<br \/>\n<\/code><\/div>\n<\/div>\n<h2 data-start=\"5450\" data-end=\"5476\">8) G\u00fcvenlik tavsiyeleri<\/h2>\n<ul data-start=\"5478\" data-end=\"5969\">\n<li data-start=\"5478\" data-end=\"5550\">\n<p data-start=\"5480\" data-end=\"5550\"><strong data-start=\"5480\" data-end=\"5507\">Parolay\u0131 komutta yazma.<\/strong> Kullan <code data-start=\"5515\" data-end=\"5524\">.my.cnf<\/code> dosyas\u0131 ve <code data-start=\"5536\" data-end=\"5547\">chmod 600<\/code>.<\/p>\n<\/li>\n<li data-start=\"5551\" data-end=\"5633\">\n<p data-start=\"5553\" data-end=\"5633\"><strong data-start=\"5553\" data-end=\"5568\">SSH anahtar<\/strong> ile parola olmadan ama g\u00fcvenli ba\u011flant\u0131 kur (public key auth).<\/p>\n<\/li>\n<li data-start=\"5634\" data-end=\"5698\">\n<p data-start=\"5636\" data-end=\"5698\"><strong data-start=\"5636\" data-end=\"5665\">Yedeklere eri\u015fimi k\u0131s\u0131tla<\/strong> (sadece backup kullan\u0131c\u0131lar\u0131).<\/p>\n<\/li>\n<li data-start=\"5699\" data-end=\"5820\">\n<p data-start=\"5701\" data-end=\"5820\">Yedekleri <strong data-start=\"5711\" data-end=\"5722\">\u015fifrele<\/strong>: <code data-start=\"5724\" data-end=\"5794\">openssl enc -aes-256-cbc -salt -pbkdf2 -pass file:\/root\/.backup_pass<\/code> veya <code data-start=\"5800\" data-end=\"5817\">gpg --symmetric<\/code>.<\/p>\n<\/li>\n<li data-start=\"5821\" data-end=\"5902\">\n<p data-start=\"5823\" data-end=\"5902\">Yedekleri farkl\u0131 lokasyona (offsite) kopyala (rsync SFTP\/Scp\/ rclone ile S3).<\/p>\n<\/li>\n<li data-start=\"5903\" data-end=\"5969\">\n<p data-start=\"5905\" data-end=\"5969\">Yedekleme scriptlerini logla ve ba\u015far\u0131\/ba\u015far\u0131s\u0131zl\u0131\u011f\u0131 monit\u00f6r et.<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"5971\" data-end=\"5994\">\u00d6rnek \u015fifreleme komutu:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<pre class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-bash\">ssh user@host <span class=\"hljs-string\">\"mysqldump --defaults-file=\/home\/backup\/.my.cnf yourdb | gzip -c\"<\/span> | openssl enc -aes-256-cbc -salt -pbkdf2 -out \/backups\/yourdb_$(<span class=\"hljs-built_in\">date<\/span> +%F).sql.gz.enc\r\n<\/code><\/pre>\n<\/div>\n<h2 data-start=\"6178\" data-end=\"6214\">9) Yedek b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc kontrol etme<\/h2>\n<ul data-start=\"6216\" data-end=\"6339\">\n<li data-start=\"6216\" data-end=\"6271\">\n<p data-start=\"6218\" data-end=\"6271\"><code data-start=\"6218\" data-end=\"6241\">gunzip -t file.sql.gz<\/code> : gzip i\u00e7eri\u011fini test eder.<\/p>\n<\/li>\n<li data-start=\"6272\" data-end=\"6339\">\n<p data-start=\"6274\" data-end=\"6339\">Gerekirse yede\u011fi ge\u00e7ici bir veritaban\u0131na geri y\u00fckleyerek do\u011frula:<\/p>\n<\/li>\n<\/ul>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\"><\/div>\n<pre class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-bash\">zcat file.sql.gz | mysql -u testuser -p testdb\r\n<span class=\"hljs-comment\"># veya<\/span>\r\ngunzip &lt; file.sql.gz | mysql -u testuser -p testdb\r\n<\/code><\/pre>\n<\/div>\n<h2 data-start=\"6463\" data-end=\"6498\">10) \u00d6rnekler \u2014 pratik senaryolar<\/h2>\n<h3 data-start=\"6500\" data-end=\"6582\">A) Tek veritaban\u0131n\u0131 uzak sunucuda al\u0131p local\u2019e kaydet (parolas\u0131z MySQL config)<\/h3>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<pre class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-bash\">ssh backup@1.2.3.4 <span class=\"hljs-string\">\"mysqldump --defaults-file=\/home\/backup\/.my.cnf --single-transaction --quick --routines --events --triggers yourdb\"<\/span> | gzip -c &gt; \/backups\/yourdb_$(<span class=\"hljs-built_in\">date<\/span> +%F).sql.gz\r\n<\/code><\/pre>\n<\/div>\n<h3 data-start=\"6778\" data-end=\"6824\">B) T\u00fcm veritabanlar\u0131n\u0131 \u00e7ek (all-databases)<\/h3>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<pre class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-bash\">ssh backup@1.2.3.4 <span class=\"hljs-string\">\"mysqldump --defaults-file=\/root\/.my.cnf --all-databases --single-transaction --quick | gzip -c\"<\/span> &gt; \/backups\/all_dbs_$(<span class=\"hljs-built_in\">date<\/span> +%F).sql.gz\r\n<\/code><\/pre>\n<\/div>\n<h3 data-start=\"6992\" data-end=\"7088\">C) Remote mysqldump \u00e7al\u0131\u015ft\u0131r\u0131p remote sunucuda s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f dosya b\u0131rak (sonra scp ile \u00e7ek)<\/h3>\n<p data-start=\"7089\" data-end=\"7122\">Uzakta depolama alan\u0131 yeterliyse:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<pre class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-bash\">ssh backup@1.2.3.4 <span class=\"hljs-string\">\"mysqldump --defaults-file=\/home\/backup\/.my.cnf yourdb | gzip -c &gt; \/tmp\/yourdb_<span class=\"hljs-subst\">$(date +%F)<\/span><\/span>.sql.gz\"\r\nscp backup@1.2.3.4:\/tmp\/yourdb_$(<span class=\"hljs-built_in\">date<\/span> +%F).sql.gz \/local\/backups\/\r\n<\/code><\/pre>\n<\/div>\n<hr data-start=\"7320\" data-end=\"7323\" \/>\n<h2 data-start=\"7325\" data-end=\"7363\">11) MySQL Veritaban\u0131 Yede\u011fi Alma \u00d6zet \u00f6neriler (quick checklist)<\/h2>\n<ul data-start=\"7364\" data-end=\"7734\">\n<li data-start=\"7364\" data-end=\"7438\">\n<p data-start=\"7366\" data-end=\"7438\">K\u00fc\u00e7\u00fck veritabanlar\u0131 \u2192 <code data-start=\"7388\" data-end=\"7428\">mysqldump --single-transaction --quick<\/code> + gzip.<\/p>\n<\/li>\n<li data-start=\"7439\" data-end=\"7503\">\n<p data-start=\"7441\" data-end=\"7503\">B\u00fcy\u00fck ve aktif veritabanlar\u0131 \u2192 XtraBackup veya LVM snapshot.<\/p>\n<\/li>\n<li data-start=\"7504\" data-end=\"7579\">\n<p data-start=\"7506\" data-end=\"7579\">Parolalar\u0131 terminalde yazma; <code data-start=\"7535\" data-end=\"7544\">.my.cnf<\/code> veya ba\u015fka g\u00fcvenli metod kullan.<\/p>\n<\/li>\n<li data-start=\"7580\" data-end=\"7627\">\n<p data-start=\"7582\" data-end=\"7627\">Cron ile otomasyon + retention (\u00f6r: 7 g\u00fcn).<\/p>\n<\/li>\n<li data-start=\"7628\" data-end=\"7680\">\n<p data-start=\"7630\" data-end=\"7680\">Yedekleri test et (gunzip -t veya test restore).<\/p>\n<\/li>\n<li data-start=\"7681\" data-end=\"7734\">\n<p data-start=\"7683\" data-end=\"7734\">Offsite kopya + \u015fifreleme (opsiyonel ama \u00f6nerilir).<\/p>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>1) K\u0131sa \u00f6zet \u2014 hangi durumlarda hangi y\u00f6ntem K\u00fc\u00e7\u00fck\/orta boyutlu veritabanlar\u0131: mysqldump + gzip \u2014 en yayg\u0131n, ta\u015f\u0131nmas\u0131 kolay. B\u00fcy\u00fck veritabanlar\u0131 \/ y\u00fcksek performans ihtiyac\u0131: Percona XtraBackup veya LVM snapshot \u2014 online (hot) yedekleme, h\u0131zl\u0131 kurtarma. H\u0131zl\u0131 tek komut ile uzak sunucudan yedek indirme: SSH ile mysqldump | gzip pipe y\u00f6ntemi. G\u00fcvenlik: Parolay\u0131 terminalde do\u011frudan [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43],"tags":[],"class_list":["post-184","post","type-post","status-publish","format-standard","hentry","category-linux-genel"],"_links":{"self":[{"href":"https:\/\/adveyer.com\/blog\/wp-json\/wp\/v2\/posts\/184","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adveyer.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adveyer.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adveyer.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/adveyer.com\/blog\/wp-json\/wp\/v2\/comments?post=184"}],"version-history":[{"count":5,"href":"https:\/\/adveyer.com\/blog\/wp-json\/wp\/v2\/posts\/184\/revisions"}],"predecessor-version":[{"id":189,"href":"https:\/\/adveyer.com\/blog\/wp-json\/wp\/v2\/posts\/184\/revisions\/189"}],"wp:attachment":[{"href":"https:\/\/adveyer.com\/blog\/wp-json\/wp\/v2\/media?parent=184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adveyer.com\/blog\/wp-json\/wp\/v2\/categories?post=184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adveyer.com\/blog\/wp-json\/wp\/v2\/tags?post=184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}