我们定制并支持我们的客户在来自不同networking托pipe服务器的托pipe服务器上托pipe的标准Web应用 通常,应用程序由PHP中的Web应用程序和数据库(主要是MySQL)组成。 对于我们的客户,我们希望提供一个超出networking托pipe商提供的备份服务(通常为四周的保留时间)。 我们要备份的Web应用程序(没有问题)和数据库(问题)。 其中一个Web主机有一个设置,可以防止用户使用mysql.sock访问MySQL数据库。 相反,他们有一个单独的名称(如user123.mydatabaseserver.com)的托pipe服务器本身。 只有通过使用-h参数才能连接到数据库,如下所示: mysql -u mydbuser -p -h user123.mydatabaseserver.com 现在,通常我们通过使用连接到实时托pipe服务器的SSH隧道和端口将MySQL端口转发到备份服务器,然后通过隧道连接到备份服务器上的数据库并运行mysqldump转发的端口。 但是,由于强制主机名参数,在这种情况下这是不可能的。 我们知道,我们可以连接到托pipe服务器,在那里转储数据库,然后使用scp或其他方法复制生成的备份文件,但是我想查看是否不会丢失一些使我们不能使用用于该备份的实时受pipe服务器的存储和/或计算时间。 有只使用端口转发的解决scheme吗? 编辑1:试图使问题更清楚 服务器A(备份系统)服务器B(应用程序服务器)服务器C(数据库服务器) 服务器A应该备份服务器C上的数据库。但是,MySQL访问权限只允许服务器B连接到服务器C并访问数据库。 在这种特定情况下,服务器B和服务器C具有相同的IP地址,但似乎主机通过套接字禁止访问MySQL,并且只允许TCP / IP连接。 与此同时,我有了一个链接SSH端口的想法: 将服务器B上的端口22222绑定到服务器C上的端口3306,然后将服务器A上的44014绑定到服务器B上的22222.但是,尝试从服务器B向服务器C进行SSH连接会导致错误消息: host address xxx.xx.xxx.xx not allowed.
我有一个1.6GB的数据库,每个月增加大约200MB的大小。 我有一个12GB内存(共享与Apache,MySQL和操作系统),MySQL总是使用交换,我需要重新启动服务,一旦达到交换空间限制。 mysql进程的典型内存使用量为3.5GB,当我的Web服务器上有很多活动时,这个数字会增加到4.5GB。 我怎样才能避免使用交换的MySQL? 是3.5GB的mysql进程内存使用量为1.6GB的数据库大小是否正常? 我的MySQLconfiguration看起来像这样,我的configuration是否优化? [mysqld] innodb_file_per_table datadir=/var/lib/mysql tmpdir=/var/lib/mysqltmp socket=/var/lib/mysql/mysql.sock skip-locking skip-name-resolve table_cache=3072 thread_cache_size=16 back_log=100 max_connect_errors=10000 open-files-limit=20000 interactive_timeout=30 wait_timeout=40 max_connections=100 skip-name-resolve max_allowed_packet=16M tmp_table_size=1768M max_heap_table_size=1768M query_cache_size=64M sort_buffer_size=1M read_buffer_size=1M read_rnd_buffer_size=8M join_buffer_size=32M key_buffer_size=64M myisam_sort_buffer_size=64M innodb_log_file_size=100M innodb_buffer_pool_size=1512M
问题 我想在专用服务器上实施MySQL备份策略。 它有多个数据库,合计总数约150GB。 其中大部分是针对其中一个数据库的。 数据库是混合引擎MyISAM和InnoDB(计划overhall正在发生长期但短期内不可能)。 寻找可以使用的策略/软件的build议。 主要目标 理想的MySQL备份程序将实现以下目标。 一致的MySQL备份。 无锁备份(或靠近,以便数据库仍然可以提供请求)。 每桌恢复。 迄今为止的build议 我不是一个专业的系统/数据库pipe理员,所以我会感谢社区的学习build议。 我到目前为止的一些build议… mysqllvm荷兰备份 Holland Backup有一个mysqllvm选项。 它通过获取MySQL数据目录的完整快照而工作。 它locking一个非常短的时间,而快照是一致的。 它达到了目标1和目标2。 目标3,不是那么多…只能恢复整个数据目录。 每个数据库恢复是不可能的,没关系每桌。 mysqldumplvm荷兰备份 Holland Backup有一个mysqldumplvm选项。 这实现了目标1和2。 目标3,不是那么多…它只允许从.sql转储中恢复数据库的每个数据库,由于数据库的大小,每天需要花费数小时才能恢复到一个虚拟数据库,以便提取一个表。 磁盘空间可能开始成为一个问题在这里。
我在Debain 7.4上安装了MySQL 5.6.16。 但我遇到了启动mysql的问题,每当我启动mysql时,我得到这个错误: The server quit without updating PID file (/var/run/mysqld/mysqld.pid). … failed! 大量的谷歌search之后,我看到我应该重新命名/移动/ etc / mysql my.cnf文件,看看是否启动MySQL。 它启动和停止没有问题,但如果试图连接到我的软件与数据库我得到这个: Caught database OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)") 然后我尝试添加/删除/ var / run / mysqld中的所有内容,并添加用户和组,但没有任何更改。 而且我无法从mysql中find任何日志文件,甚至在my.cnf中设置它们。 这是从/ etc / mysql的Pastebin my.cnf文件
我需要设置一个负载均衡的网站,以容纳更多的访问者, 我在论坛上看到,varnish(balance) – > apache(web1&2) – > mysql(dbserver)是要走的路。 我知道如何设置清漆 – >单一的Web服务器 – > MySQL,但不是两个Web服务器来平衡, 但是,我怎样才能通过实时同步Web服务器的内容? 我的自定义应用程序允许访客发布文件。 请告诉我如何configuration这个? 我的设置。 (internet) | (load balance server) / \ / \ (webserver1) (webserver2) \ / (database server) 谢谢。
我在Ubuntu 14.04上安装了Exim 4.80服务器。 我想从Dovecot Auth切换到MySQL。 密码存储为crypt(sha256,以$ 5 $开头)。 扩展看起来像这样: server_condition = $ {如果crypteq {$ 3} {$ {lookup mysql {select密码来自帐户LEFT JOIN domains ON accounts.domain = domains.id AND domains.domain ='$ {quote_mysql:$ {domain:$ 2}}'WHERE accounts 。名称= '$ {quote_mysql:$ {local_part:$ 2}}'}}} {是} {无}} 当我打开debugging日志,我得到这样的东西: 10科目= $ 5 $ fBzbQG0FRF1Lt2QI $ Nhmrw5gKq62vmHDD8Eov9WCoGRPkk —–删除—- 10encryption= $ 5 $ fBzbQG0FRF1Lt2QI $ Nhmrw5gKq62vmHDD8Eov9WCoGRPkk […]
我在MySQL 5.6中有一个用户,在用户名中用一个不可打印的字符创build。 我怎样才能放弃这个用户? mysql> select user,host from mysql.user where user like 'wiki%'; +—————–+——+ | user | host | +—————–+——+ | wiki4thech@rch | % | +—————–+——+ 1 row in set (0.00 sec) 那么这看起来不太好。 让我们坚持一个前缀和一个后缀,所以我们可以看到MySQL是否将任何填充添加到输出: # mysql -E –disable-column-names -u root -p mysql –execute "select concat('START',user,'END') from user where user like 'wiki%'" Enter password: *************************** 1. row […]
我有一个3节点的加莱拉群集,有几百个数据库服务于不同的客户端。 我只使用加莱拉作为一个简单的方法来处理复制和失败。 我实际上不是一次使用多个主人。 我需要在每个数据库的某些表上运行一个相当昂贵的ALTER。 通常情况下,我会有一个脚本在每个数据库上逐一运行升级脚本,每次只closures一个站点。 但是对于这个galera集群,任何缓慢的DDL都会导致对所有数据库的完全锁定,而不仅仅是所运行的数据库。 基本上,这意味着无论何时我需要运行升级,每个人都会在整个过程中脱机,我需要为每个人运行升级。 我知道有wsrep_OSU_method ,但将其更改为RSU有它自己的问题,我不认为这有帮助。 是否有一种方法来禁用锁? 或者至less使它成为数据库级锁而不是服务器级锁? 如果我在运行查询时禁用了集群中的其他节点,会导致全局锁? 就像我说的,我实际上并没有使用多个主设备,所以在这种情况下,让其他节点离线几分钟是没有问题的(假设通常的自动重连过程发生在我将它们带回时)。
我有一个古老的MySQL数据库,我已经运行了很长时间,大概14年。 显然,我错过了很久以前运行mysql_upgrade,也许在从4.x升级到5.x(从那以后)。 现在,在昨天升级到5.6.22(从5.5.x开始)之后,我不能再login了,我似乎也无法解决这个问题。 显然,旧式的密码哈希已经被弃用了10多年,但是我从来没有看到过这样的警告,直到它刚刚停止工作。 第一个症状是错误的是这样的: mysqldump: Got error: 2049: Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled) when trying to connect 我使用mysql -u root -p得到相同的错误。 我通过使用–skip-secure-auth选项来通过mysql命令。 之后, 文档说你应该更新你的密码 : SET old_passwords = 0; UPDATE mysql.user SET plugin = 'mysql_native_password', Password = PASSWORD('DBA-chosen-password') WHERE (User, Host) = ('user1', 'localhost'); FLUSH PRIVILEGES; 这失败了: ERROR […]
在我的一台Debian机器上,我正在JVM和MySQL实例上运行一个服务。 我已经启用了各种在线指南的巨大页面,但我有一个问题。 这是我的configuration: vm.nr_hugepages = 2816 vm.nr_overcommit_hugepages = 128 vm.hugetlb_shm_group = 1002 kernel.shmmax = 5905580032 kernel.shmall = 1441792 更新:我的机器是VMWare ESX上的访客虚拟机,分配了2个CPU和6GB的RAM。 我为系统保留了512MB或RAM,其余的(5.5GB,5905580032bytes,见kernel.shmmax )分配给JVM 3GB,MySQL分配2.5GB。 所以我预留了5.5GB / 2MB = 2816个大页面 允许对“服务”组(gid = 1002)访问内存。 MySQL和JVM与作为该组“服务”的不同用户一起运行,作为主要组: uid=106(mysql) gid=1002(services) groups=1002(services),111(mysql) uid=1001(java) gid=1002(services) groups=1002(services),1003(java) HugePages已启用,他们的工作。 问题是,当时只有一个应用程序似乎能够使用它们! 如果我第一次启动mysql,那么jvm将无法使用它,反之亦然。 service mysql start -> OK service java start -> Fallback to normal memory 要么 […]