ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Linux 存储与数据库实战:NFS、iSCSI、MariaDB 与 MySQL 主从同步

Linux 存储与数据库实战:NFS、iSCSI、MariaDB 与 MySQL 主从同步 目录一、NFS 服务器文件级共享核心概念工作流程服务端部署导出配置 /etc/exports客户端挂载二、iSCSI 服务器块级共享 / IP-SAN核心概念服务端配置客户端访问三、MariaDB 数据库管理基础部署与加固常用 SQL用户权限备份恢复四、MySQL 主从同步核心流程主从配置五、易错点速记一、NFS 服务器文件级共享核心概念NFS网络文件系统让客户端像访问本地文件一样访问远程文件。由 Sun 开发v3 最常用v4 更安全Kerberos。基于 RPC 工作C/S 架构。共享的是目录/文件。工作流程注册 → 查端口 → 挂载 → 文件访问RPC 转发→ 权限控制UID/GID。服务端部署yum install -y nfs-utils useradd -u 1000 laoma echo redhat | passwd --stdin laoma mkdir -p /shares/webapp chown 48 /shares/webapp # 48apache 的 UID systemctl enable nfs-server --now firewall-cmd --permanent --add-servicenfs --add-servicerpc-bind --add-servicemountd firewall-cmd --reload导出配置 /etc/exports目录 客户端(选项) /shares/webapp 10.1.8.0/24(rw)选项rw读/写、ro默认只读、no_root_squash客户端 root 有真实权限。默认 root_squash客户端 root → 服务器 nobody。括号前不能有空格。生效exportfs -r 或 systemctl reload nfs-server。查看exportfs -v、showmount -e 服务器。客户端挂载yum install -y nfs-utils httpd showmount -e storage mkdir /var/www/html mount -t nfs storage:/shares/webapp /var/www/html # root 建文件失败被 squashapache(48) 能建UID 一致 curl http://10.1.8.11/持久化 fstabstorage:/shares/webapp /var/www/html nfs defaults 0 0二、iSCSI 服务器块级共享 / IP-SAN核心概念iSCSI SCSI over TCP/IP由 IBM 研发块级共享。共享的是裸块设备客户端看到 /dev/sdX自己分区格式化。名词Initiator客户端、Target服务端存储、Portal3260、LUN块设备、ACL、TPG。IQN 格式iqn.YYYY-MM.com.reversed.domain:name_string服务端配置yum install -y targetd targetcli systemctl enable target --now firewall-cmd --permanent --add-serviceiscsi-target firewall-cmd --reload targetcli /backstores/block create myblock1 /dev/sdb # ① 后端存储 /iscsi create iqn.2024-12.cloud.laoma.storage:disk1 # ② Target cd /iscsi/iqn.2024-12.cloud.laoma.storage:disk1/tpg1/luns create /backstores/block/myblock1 # ③ LUN先有 backstore cd /iscsi/iqn.2024-12.cloud.laoma.storage:disk1/tpg1/acls create iqn.2024-12.cloud.laoma.client # ④ ACL cd /iscsi/iqn.2024-12.cloud.laoma.storage:disk1/tpg1/portals delete 0.0.0.0 3260 create 10.1.8.10 3260 # ⑤ Portal exit # 自动保存 saveconfig.jsonbackstore 4 种block块、fileio文件、pscsi物理 SCSI、ramdisk内存不持久。命令行模式要显式 targetcli saveconfig。客户端访问yum install -y iscsi-initiator-utils vim /etc/iscsi/initiatorname.iscsi # IQN 必须与服务端 ACL 一致 InitiatorNameiqn.2024-12.cloud.laoma.client iscsiadm -m discovery -t st -p 10.1.8.10 iscsiadm -m node -T iqn.2024-12.cloud.laoma.storage:disk1 -l iscsiadm -m session -P 3 mkfs.xfs /dev/sdb # 空盘格式化持久化fstab 用 UUID _netdevsystemctl enable --now iscsid iscsi。两服务iscsid常驻守护必须运行、iscsi开机自动登录一次性。并发警告多客户端挂同一 iSCSI 文件系统会损坏需集群文件系统GFS2。故障能发现但登录失败 → IQN 与 ACL 不匹配 → 改initiatorname.iscsi 重启iscsid。三、MariaDB 数据库管理基础MariaDB MySQL 开源分支完全兼容。进程mysqld_safe守护root mysqld核心mysql 用户父子关系。配置/etc/my.cnf优先→ /etc/my.cnf.d/*.cnfserver.cnf服务端、client.cnf客户端。部署与加固yum install -y mariadb-server mariadb systemctl enable --now mariadb firewall-cmd --permanent --add-servicemysql firewall-cmd --reload mysql_secure_installation # 加固SQL 五类DQLSELECT/ DMLINSERT·UPDATE·DELETE/ DDLCREATE·DROP/ TPL事务/ DCLGRANT·REVOKE常用 SQLSHOW DATABASES; USE 库; DESCRIBE 表; CREATE DATABASE IF NOT EXISTS inventory; -- 避免 ERROR 1007 SELECT * FROM product WHERE price100; SELECT * FROM product ORDER BY price DESC; INSERT INTO staff VALUES (1,laoma,28,10); UPDATE staff SET age30 WHERE id3; -- 不带 WHERE 改所有 DELETE FROM staff WHERE id3; -- 不带 WHERE 删所有用户权限CREATE USER laoma% IDENTIFIED BY 123; GRANT SELECT,INSERT ON inventory.* TO laoma%; -- 范围*.* / 库.* / 表 / 列 SHOW GRANTS FOR laoma%; REVOKE SELECT ON inventory.* FROM laoma%; DROP USER laoma%; SET PASSWORD FOR laoma% PASSWORD(xxx); FLUSH PRIVILEGES; -- 授权后必执行新用户最小权限生产避免 ‘%’。备份恢复物理停服务 → cp -a /var/lib/mysql 备份目录 → 恢复时拷回 chown mysql:mysql。逻辑mysqldump -u root -p --all-databases 文件含建库–databases。恢复mysql -u root -p 文件 或 source 文件。四、MySQL 主从同步核心流程主库写 binlog → 从库 I/O 线程拉取写 relay log → 从库 SQL 线程重放 → 一致。两线程Slave_IO_Running Slave_SQL_Running 都 Yes 才正常。三种方式异步默认快但可能丢/ 半同步等 1 从库确认折中/ 全同步最稳最慢。防丢数据半同步 sync_binlog1 innodb_flush_log_at_trx_commit1。架构主流MGR 单主新/ MHA老/ 简单主从小型。主从配置# 主库 /etc/my.cnf.d/master.cnf [mysqld] server_id1 log_binmysql-bin binlog_formatROW relay_logmysql-relay-bin # 主库建复制用户 grant replication slave on *.* to repl10.1.8.12 identified by Laoma123; show master status\G; # 记录 File 和 Position # 从库同上仅 server_id2 -- 从库 CHANGE MASTER TO master_host10.1.8.11, master_userrepl, master_passwordLaoma123, master_log_filemysql-bin.000003, master_log_pos327; START SLAVE; SHOW SLAVE STATUS\G; -- 看两个 Running 都 Yes五、易错点速记NFS括号前不能有空格root_squash 默认开启。iSCSI先建 backstore 再建 LUN命令行要 saveconfig客户端 IQN 要与 ACL 一致。SQLUPDATE/DELETE 不带 WHERE 影响所有记录授权后 FLUSH PRIVILEGES。主从server_id 不能重复两线程都要 Yesfstab 用 UUID_netdev。
返回列表