AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-21985

HTF's questions

Martin Hope
HTF
Asked: 2021-04-23 03:37:55 +0800 CST

使用父名获取父级和子级

  • 2

有没有办法使用单个查询获取父母及其子女?

CREATE TABLE `servers` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `parent_id` int DEFAULT NULL,
  PRIMARY KEY (`id`)
)

INSERT INTO servers (name) VALUES ('kvm01'), ('kvm02')

INSERT INTO servers (name, parent_id) VALUES ('web01', 1), ('db01', 1), ('web02', 2), ('db02', 2)

电流输出:

mysql [lab]> SELECT child.id FROM servers AS parent LEFT JOIN servers AS child ON (child.parent_id = parent.id) WHERE parent.name = 'kvm01';
+------+
| id   |
+------+
|    3 |
|    2 |
+------+
2 rows in set (0.00 sec)

预期输出:

+------+
| id   |
+------+
|    3 |
|    2 |
|    1 |
+------+
mysql query
  • 2 个回答
  • 292 Views
Martin Hope
HTF
Asked: 2016-10-27 04:48:43 +0800 CST

有没有办法实际限制 InnoDB 数据字典?

  • 0

我想降级 AWS 实例以节省成本,但是由于表和工作负载(逻辑备份)的数量,InnoDB 数据字典变得非常大。

mysql> SELECT COUNT(*) FROM information_schema.INNODB_SYS_TABLES;
+----------+
| COUNT(*) |
+----------+
|  1020034 |
+----------+
1 row in set (4.61 sec)

mysql> SELECT COUNT(*) FROM information_schema.INNODB_SYS_INDEXES;
+----------+
| COUNT(*) |
+----------+
|  2628181 |
+----------+
1 row in set (4.99 sec)

-

mysql> SHOW GLOBAL VARIABLES LIKE 'table_%';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| table_definition_cache     | 400   |
| table_open_cache           | 1     |
| table_open_cache_instances | 1     |
+----------------------------+-------+
3 rows in set (0.00 sec)

mysql> SHOW GLOBAL STATUS LIKE 'Open%table%';
+--------------------------+----------+
| Variable_name            | Value    |
+--------------------------+----------+
| Open_table_definitions   | 400      |
| Open_tables              | 1        |
| Opened_table_definitions | 2312885  |
| Opened_tables            | 22403462 |
+--------------------------+----------+
4 rows in set (0.00 sec)

-

mysql> SHOW GLOBAL STATUS LIKE 'Innodb_mem_dictionary';
+-----------------------+------------+
| Variable_name         | Value      |
+-----------------------+------------+
| Innodb_mem_dictionary | 4517841711 |
+-----------------------+------------+
1 row in set (0.00 sec)

表定义缓存

对于 InnoDB,table_definition_cache 充当 InnoDB 数据字典缓存中打开表实例数量的软限制。如果打开表实例的数量超过了table_definition_cache设置,LRU机制开始将表实例标记为逐出,并最终将其从数据字典缓存中移除。

知道为什么这没有发生吗?我想知道在这种情况下启用 innodb_file_per_table 是否有帮助。

一些额外的信息:

mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_size';
+-------------------------+------------+
| Variable_name           | Value      |
+-------------------------+------------+
| innodb_buffer_pool_size | 8589934592 |
+-------------------------+------------+
1 row in set (0.00 sec)

mysql> SELECT @@version, @@version_comment;
+--------------------+---------------------------------------------------------------------------------------------------+
| @@version          | @@version_comment                                                                                 |
+--------------------+---------------------------------------------------------------------------------------------------+
| 5.6.30-76.3-56-log | Percona XtraDB Cluster (GPL), Release rel76.3, Revision aa929cb, WSREP version 25.16, wsrep_25.16 |
+--------------------+---------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

-

# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

# free -m
              total        used        free      shared  buff/cache   available
Mem:          14881       14239         326           6         315         378
Swap:          4095        1237        2858

# ps -o %mem,rss,vsize -C mysqld
%MEM   RSS    VSZ
94.2 14364148 16262404
mysql innodb
  • 2 个回答
  • 454 Views
Martin Hope
HTF
Asked: 2014-07-25 04:45:29 +0800 CST

来自 information_schema.GLOBAL_STATUS 的 MySQL 读/写比率

  • 2

你能帮我构建一个查询来对表中的特定行求和吗,基本上所需的输出是:

+-----------------+----------------+
| Total reads     | Total writes   |
+-----------------+----------------+
| 345436          | 345435         |
+-----------------+----------------+
  • 总读数 = Com_select
  • 总写入 = Com_delete、Com_insert、Com_update、Com_replace
mysql
  • 1 个回答
  • 714 Views
Martin Hope
HTF
Asked: 2014-07-19 01:35:31 +0800 CST

MySQL 5.6:Slave_IO 线程停止工作

  • 5

标准复制无故中断。

mysql> SELECT @@version, @@version_comment;
+---------------+----------------------------------------------------------------------------+
| @@version | @@version_comment |
+---------------+----------------------------------------------------------------------------+
| 5.6.15-56-log | Percona XtraDB Cluster (GPL), Release 25.5, Revision 759, wsrep_25.5.r4061 |
+---------------+----------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'wsrep_on';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wsrep_on | OFF |
+---------------+-------+
1 row in set (0.00 sec)

启用崩溃安全复制:

master_info_repository = TABLE
relay_log_info_repository = TABLE
relay_log_recovery = 1

从机运行良好:

# mysql -e "SHOW SLAVE STATUS\G" | grep "Slave"
               Slave_IO_State: Waiting for master to send event
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

但一段时间后,MASTER 上没有连接的从属服务器和 IO 线程从 MASTER 中消失:

mysql> SELECT * FROM information_schema.processlist WHERE command = 'Binlog Dump';
Empty set (0.10 sec)

mysql> SHOW SLAVE HOSTS;
Empty set (0.00 sec)

掌握:

mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 | 568210 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

奴隶:

# mysql -e "SHOW SLAVE STATUS\G" | grep "Master_Log"
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 568210
        Relay_Master_Log_File: mysql-bin.000003
          Exec_Master_Log_Pos: 568210

掌握:

mysql> CREATE DATABASE IF NOT EXISTS repl_test; SHOW MASTER STATUS;
Query OK, 1 row affected (0.00 sec)

+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 | 568333 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

从站没有变化:

# mysql -e "SHOW SLAVE STATUS\G" | grep "Master_Log"
    Master_Log_File: mysql-bin.000003
    Read_Master_Log_Pos: 568210
    Relay_Master_Log_File: mysql-bin.000003
    Exec_Master_Log_Pos: 568210

slave 在 IO_THREAD 重新启动后获取更改:

# mysql -e "STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;"
# mysql -e "SHOW SLAVE STATUS\G" | grep "Master_Log"
    Master_Log_File: mysql-bin.000003
    Read_Master_Log_Pos: 568333
    Relay_Master_Log_File: mysql-bin.000003
    Exec_Master_Log_Pos: 568333

更新:2014 年 7 月 18 日星期五 14:15:59 BST

mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: $IP
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000007
          Read_Master_Log_Pos: 433
               Relay_Log_File: mysql-relay.000265
                Relay_Log_Pos: 283
        Relay_Master_Log_File: mysql-bin.000007
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 433
              Relay_Log_Space: 710
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: Yes
           Master_SSL_CA_File: /etc/mysql/ca-cert.pem
           Master_SSL_CA_Path: 
              Master_SSL_Cert: /etc/mysql/client-cert.pem
            Master_SSL_Cipher: 
               Master_SSL_Key: /etc/mysql/client-key.pem
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1124732721
                  Master_UUID: 4412a455-e1d0-11e3-835a-5254007fe78d
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: /etc/mysql/ca-cert.pem
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
1 row in set (0.00 sec)
mysql replication
  • 2 个回答
  • 12770 Views
Martin Hope
HTF
Asked: 2014-03-26 08:25:56 +0800 CST

MySQL:睡眠注入

  • 1

我想知道是否有人可以帮助理解这个查询,基本上我知道SLEEP()函数,但我以前从未见过这个实现。为什么没有返回任何结果?

mysql> SELECT fname, lname FROM contacts WHERE fname = 'test' / SLEEP(1) / '';
Empty set, 14 warnings (7.00 sec)

警告:

Warning | 1292 | Truncated incorrect DOUBLE value: 'test'
...
mysql
  • 1 个回答
  • 440 Views
Martin Hope
HTF
Asked: 2014-01-29 14:19:10 +0800 CST

MySQL:连接查询

  • 0

我有以下两个表:

mysql> DESC domains;
+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| id              | int(11)      | NO   | PRI | NULL    | auto_increment |
| name            | varchar(255) | NO   | UNI | NULL    |                |
| master          | varchar(128) | YES  |     | NULL    |                |
| last_check      | int(11)      | YES  |     | NULL    |                |
| type            | varchar(6)   | NO   |     | NULL    |                |
| notified_serial | int(11)      | YES  |     | NULL    |                |
| account         | varchar(40)  | YES  |     | NULL    |                |
+-----------------+--------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)

mysql> DESC records;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | bigint(11)   | NO   | PRI | NULL    | auto_increment |
| domain_id   | int(11)      | YES  | MUL | NULL    |                |
| name        | varchar(255) | YES  | MUL | NULL    |                |
| type        | varchar(6)   | YES  |     | NULL    |                |
| content     | varchar(455) | YES  |     | NULL    |                |
| ttl         | int(11)      | YES  |     | NULL    |                |
| prio        | int(11)      | YES  |     | NULL    |                |
| change_date | int(11)      | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)

我想加入domains.notified_serial下面的查询,id字段在两个表上都是通用的,请问下面的查询是否是最优的?

mysql> SELECT * FROM records WHERE name IN ('example.com', 'www.example.com') AND type = 'A';
+------------+-----------+-------------------+------+-----------------+------+------+-------------+
| id         | domain_id | name              | type | content         | ttl  | prio | change_date |
+------------+-----------+-------------------+------+-----------------+------+------+-------------+
| 2926120529 |    620750 | example.com     | A      | 192.168.1.100   |  600 |    0 |  1325776553 |
| 2926120595 |    620750 | www.example.com | A      | 192.168.1.100   |  600 |    0 |  1325776553 |
+------------+-----------+-------------------+------+-----------------+------+------+-------------+
4 rows in set (0.00 sec)

编辑:2014 年 1 月 29 日星期三 22:39:41 GMT

mysql> SHOW CREATE TABLE domains\G
*************************** 1. row ***************************
       Table: domains
Create Table: CREATE TABLE `domains` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `master` varchar(128) DEFAULT NULL,
  `last_check` int(11) DEFAULT NULL,
  `type` varchar(6) NOT NULL,
  `notified_serial` int(11) DEFAULT NULL,
  `account` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name_index` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=623933 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

mysql> SHOW CREATE TABLE records\G
*************************** 1. row ***************************
       Table: records
Create Table: CREATE TABLE `records` (
  `id` bigint(11) NOT NULL AUTO_INCREMENT,
  `domain_id` int(11) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `type` varchar(6) DEFAULT NULL,
  `content` varchar(455) DEFAULT NULL,
  `ttl` int(11) DEFAULT NULL,
  `prio` int(11) DEFAULT NULL,
  `change_date` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `rec_name_index` (`name`),
  KEY `nametype_index` (`name`,`type`),
  KEY `domain_id` (`domain_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8544581783 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
mysql join
  • 1 个回答
  • 70 Views
Martin Hope
HTF
Asked: 2013-12-06 13:42:48 +0800 CST

MySQL查询日志

  • 1

我想知道 MySQL 通用查询日志是否有替代方案。我想记录(主要是)DDL 语句,所以我可以跟踪哪些用户DROP数据库/表等。我知道启用通用查询日志可能会导致一些性能下降。

问题:

  • 我可以仅使用常规查询日志记录/过滤 DDL 语句吗
  • 是否可以选择在文件系统上为一般查询日志指定位置
  • 是否有任何其他选项/解决方案,例如记录到 rsyslog

问候

编辑:2013 年 12 月 6 日星期五 10:57:31 GMT

看起来可以在文件系统上为一般查询日志设置目标,但是由于性能影响,我仍在寻找一些替代方法。

mysql
  • 2 个回答
  • 2145 Views
Martin Hope
HTF
Asked: 2013-09-14 07:15:32 +0800 CST

MySQL:sysbench 测试 - InnoDB 与内存表

  • 2

为了调查新 HP Gen8 服务器的性能问题,我进行了一些测试(Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz)

我创建了两个表,第一个使用InnoDB存储引擎,第二个使用Memory堆表。

系统详情:

sysbench-0.4.12-5.el6.x86_64
CentOS release 6.4 (Final)

准备阶段:

InnoDB

# sysbench --db-driver=mysql --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 --mysql-db=sbtest1 prepare

内存(堆)

# sysbench --db-driver=mysql --test=oltp --mysql-table-engine=heap --oltp-table-size=1000000 --mysql-db=sbtest2 prepare

测试阶段:

Sysbench – 只读测试 – 100 万行的单表 – 数据大小 559MB(527MB 数据 + 31MB 索引)

InnoDB

# sysbench --db-driver=mysql --test=oltp --mysql-table-engine=innodb --num-threads=128 --max-requests=100000 --oltp-read-only run

总时间:16.3648s,TPS(每秒事务数):6111.40

内存(堆)

# sysbench --db-driver=mysql --test=oltp --mysql-table-engine=heap --mysql-engine-trx=no --num-threads=128 --max-requests=100000 --oltp-read-only run

这个测试运行的时间更长,我不得不停止它,因为服务器上的负载非常高 - 即使这是在内存表中!?。

mysql innodb
  • 1 个回答
  • 5855 Views
Martin Hope
HTF
Asked: 2013-08-28 06:59:18 +0800 CST

MySQL:mysqld_safe 选项

  • 3

有没有办法在配置文件中指定这些选项?

我试图将它们添加到[mysqld_safe]部分中,但它不起作用:

[mysqld_safe]
numa-interleave = 1
flush-caches = 1

-

# ps -ww -lfC mysqld_safe
F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root     17180     1  0  80   0 - 26549 wait   15:06 pts/1    00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/mysql.pid

请注意,我使用的是 Percona 服务器 5.5.30-30.2

编辑:2013 年 8 月 28 日 - 08:34:

不幸的是,我在以下位置找不到这条线/etc/init.d/mysql:

# grep -n "interleave" < /etc/init.d/mysql
# echo $?
1

我可以手动调用这些选项:

mysqld_safe --datadir=/mnt/data/mysql --pid-file=/mnt/data/mysql/db3.improve.pid --numa-interleave --flush-caches

但使用选项文件仍然有default策略

# cat /proc/$(pidof mysqld)/numa_maps | cut -d ' ' -f 2 | uniq
default

init除了将这些选项硬编码到脚本中或手动启动 MySQL 守护程序之外,必须有其他方法......

编辑:2013 年 8 月 29 日 - 08:38:

我刚刚使用 Percona Server 5.5.28-29.1 对其进行了测试。

我仍然没有看到numa相关条目,/etc/init.d/mysql但是mysqld_safe脚本中有:

# grep -n "interleave" /usr/bin/mysqld_safe 
21:numa_interleave=0
67:  --numa-interleave          Run mysqld with its memory interleaved
215:      --numa-interleave) numa_interleave=1 ;;
777:# Set mysqld's memory interleave policy.
780:if true && test $numa_interleave -eq 1
785:    log_error "numactl command not found, required for --numa-interleave"
788:  elif ! numactl --interleave=all true
794:  cmd="$cmd numactl --interleave=all"
795:elif test $numa_interleave -eq 1
797:  log_error "--numa-interleave is not supported on this platform"

我已经测试了其他选项,例如nice,open_files_limit它们工作正常,所以看起来唯一的选择是将它硬编码到init脚本中

mysql percona-server
  • 1 个回答
  • 2856 Views
Martin Hope
HTF
Asked: 2013-08-17 02:43:58 +0800 CST

MySQL:错误 126 (HY000):表的密钥文件不正确 + 逻辑备份慢

  • 1

我已经用 'tmpfs' 挂载了 '/tmp' 目录,由于某种原因,这导致了以下错误:

mysql> SELECT DISTINCT table_schema FROM information_schema.tables WHERE table_schema NOT IN ('information_schema','mysql')
    -> ;
ERROR 126 (HY000): Incorrect key file for table '/tmp/#sql_29ef_0.MYI'; try to repair it

-

# df -h /tmp/
Filesystem            Size  Used Avail Use% Mounted on
tmpfs                 2.0G   12K  2.0G   1% /tmp
# df -i /tmp/
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
tmpfs                2041621       7 2041614    1% /tmp
# mount | grep /tmp
tmpfs on /tmp type tmpfs (rw,size=2048M)

请注意,当 '/tmp' 目录与 ext4 文件系统一起挂载时,相同的查询可以正常工作。

编辑:

服务器_01

# cd /var/lib/mysql ; ls -lR | grep -c "\.frm$"
1876765

但这也发生在表少得多的服务器上:

服务器_02

# cd /var/lib/mysql ; ls -lR | grep -c "\.frm$"
49514 

我正在使用此查询列出所有数据库,但由于它不起作用,tmpfs我只是将其替换为更简单的一个(显示数据库...)。

我正在查看/tmpmount with上的磁盘空间tmpfs,但仍然有足够的空间,所以我不确定它是如何耗尽空间的?

基本上,我在服务器上使用约 8000 个数据库进行逻辑备份时遇到问题 - 完成此任务需要很多小时(约 24 小时)。我创建了一个简单的 BASH 脚本(请参见下文),而不是mysqldump我使用mydumper的初始测试表明它要快得多。

备份最初运行非常快,然后显着减慢:

# ./backup.sh
Backing up database number: 1
Completed in: 0.016
Backing up database number: 2
Completed in: 0.078
Backing up database number: 3
Completed in: 0.074
Backing up database number: 4
Completed in: 0.068
Backing up database number: 5
Completed in: 0.071
Backing up database number: 6
Completed in: 0.060
Backing up database number: 7
Completed in: 0.067
Backing up database number: 8
Completed in: 0.070
Backing up database number: 9
Completed in: 0.065
.....
Backing up database number: 107
Completed in: 10.749
Backing up database number: 108
Completed in: 12.125
Backing up database number: 109
Completed in: 11.313
Backing up database number: 110
Completed in: 11.572
Backing up database number: 111
Completed in: 11.371
.....

脚本:

#!/usr/bin/env bash

DATA_DIR="/tmp/mysqlbackup"
LOCKFILE=/tmp/backup.lock
NOW=$(date +%Y%m%d)
COUNT=1

if [ -f "$LOCKFILE" ]; then
        echo "$(basename $0) is already running: PID $(cat $LOCKFILE)"
        exit 0

else

        echo $$ > $LOCKFILE

        if [ ! -d $DATA_DIR/$NOW ]; then
                mkdir -m 700 -p $DATA_DIR/$NOW
        fi

        while read DB; do

                (( COUNT++ ))

                echo "Backing up database number: $COUNT"

                START=$(date +%s.%N)

                mydumper -e -o $DATA_DIR/$NOW/$DB -B "$DB"

                ELAPSED=$(date +%s.%N)  

                printf "Completed in: %.3F\n" $(echo $ELAPSED - $START | bc)

        done <<< "$(mysql -A -B -N -e "SHOW DATABASES" | egrep -v '(mysql|*_schema|log)')"

        echo "Removing backup dir...";

        rm -rf $DATA_DIR/$NOW

        rm -f $LOCKFILE

        exit 0

fi
mysql backup
  • 1 个回答
  • 7425 Views
Martin Hope
HTF
Asked: 2013-07-21 07:46:15 +0800 CST

密码加密类型

  • 0

我想确认 MySQL 是否使用 SHA1 进行“PASSSWORD”散列以及为什么下面的测试不起作用:

mysql> GRANT USAGE ON *.* TO 'test'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> SELECT user,host,password FROM mysql.user WHERE user='test';
+------+------------+-------------------------------------------+
| user | host       | password                                  |
+------+------------+-------------------------------------------+
| test | localhost  | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+------+------------+-------------------------------------------+
1 row in set (0.01 sec)

mysql> \q
Bye
[root@test ~]# echo -n "password" | sha1sum | awk '{print toupper($1)}'
5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8
mysql encryption
  • 2 个回答
  • 6982 Views
Martin Hope
HTF
Asked: 2013-07-09 01:10:54 +0800 CST

安全性:从 MySQL CLI 写入文件

  • 1

我正在测试从 MySQL CLI(本地和远程)写入文件,我想知道是什么设置阻止了远程用户的写入,基本上我想确保它在所有服务器上设置,以防有人(开发人员)允许远程访问到 MySQL:

本地(允许写入):

mysql> SELECT CURRENT_USER();
+----------------+
| CURRENT_USER() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

mysql> \P cat >> /etc/passwd
PAGER set to 'cat >> /etc/passwd'
mysql> SELECT CONCAT('test:x:5000:5000::/home/test:/bin/bash');

远程(写入被拒绝):

mysql> SELECT CURRENT_USER();
+----------------+
| CURRENT_USER() |
+----------------+
| root@%         |
+----------------+
1 row in set (0.01 sec)

mysql> \P cat >> /etc/passwd
PAGER set to 'cat >> /etc/passwd'
mysql> SELECT CONCAT('test:x:5000:5000::/home/test:/bin/bash');
sh: /etc/passwd: Permission denied
mysql
  • 2 个回答
  • 719 Views
Martin Hope
HTF
Asked: 2013-07-02 06:10:08 +0800 CST

MySQL 复制:“主键的重复条目”

  • 12

您能否帮助我理解为什么我在完全重新同步后在从属服务器上收到“主键的重复条目”。

基本上'mysqldump'几乎整晚都在运行,然后恢复过程花了几个小时,所以当我启动从属服务器时,它比主服务器晚了~63874秒。

从服务器是只读的(read_only),在重新同步过程中没有任何写入,所以我不明白为什么会有重复的密钥。

二进制日志格式在 master 上设置为 MIXED。

用于备份数据库的命令:

mysqldump --opt --single-transaction -Q --master-data=2 db | bzip2 -cz > db.sql.bz2

从站仅从主站(db -> db_backup)复制一个数据库,具有以下选项:

replicate-wild-do-table = db_backup.%
replicate-rewrite-db = db->db_backup
mysql replication
  • 2 个回答
  • 33147 Views
Martin Hope
HTF
Asked: 2013-06-21 00:45:51 +0800 CST

MySQL 执行语句返回 'NULL'

  • 0

您能否告知为什么此查询在 BASH shell 上返回“NULL”?基本上我需要编写脚本所以你能否也请告知在 BASH 脚本中执行查询的最佳实践是什么?

MySQL命令行界面

mysql> SELECT CONCAT(mail_name,"@",name) AS email_address,accounts.password 
     > FROM mail 
     > LEFT JOIN domains ON domains.id=mail.dom_id
     > LEFT JOIN accounts ON accounts.id=mail.account_id LIMIT 2;
+-------------------------------------+----------+
| email_address                       | password |
+-------------------------------------+----------+
| [email protected]                     | password1| 
| [email protected]                     | password2|
+-------------------------------------+----------+
2 rows in set (0.00 sec)

巴什外壳

# mysql test -e "SELECT CONCAT(mail_name,"@",name) AS email_address,accounts.password FROM mail LEFT JOIN domains ON domains.id=mail.dom_id LEFT JOIN accounts ON accounts.id=mail.account_id LIMIT 2;"
+---------------+----------+
| email_address | password |
+---------------+----------+
| NULL          | password1| 
| NULL          | password2|    | 
+---------------+----------+
mysql
  • 1 个回答
  • 1157 Views
Martin Hope
HTF
Asked: 2013-06-07 07:34:22 +0800 CST

在不同数据库中的表上运行 pt-table-checksum

  • 2

我正在使用过滤器进行复制:

replicate-wild-do-table = test_slave.%
replicate-rewrite-db = test->test_slave

是否有一个选项可以在从站上为“pt-table-checksum”指定不同的数据库名称

pt-table-checksum --host=localhost --databases=test --max-load=Threads_connected:25 --no-check-replication-filters

编辑1:

mysql> SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'test_slave';
+----------+
| COUNT(*) |
+----------+
|      145 |
+----------+
1 row in set (0.00 sec)


mysql> SELECT COUNT(*) FROM percona.checksums;
+----------+
| COUNT(*) |
+----------+
|       40 |
+----------+
1 row in set (0.00 sec)

编辑2:

# ls -l *.frm | wc -l
145
# ls -l | awk '{print $3,$4}' | uniq

mysql mysql

它还抱怨两个表没有索引并且过大。看起来它只是跳过了一些表?

mysql percona-tools
  • 1 个回答
  • 2178 Views
Martin Hope
HTF
Asked: 2013-04-25 10:34:47 +0800 CST

MySQL - 用于测试单词 'ft_min_word_len' 的最小长度的 SQL 语句

  • 2

我正在尝试了解 FULLTEXT 索引。

是否有一些 SQL 查询来测试“ft_min_word_len”变量?

我尝试仅在下面的示例中匹配四个字符,但它不起作用。如果“(数据库|数据)”不匹配,为什么返回第三行

mysql> SHOW VARIABLES LIKE 'ft_min_word_len';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| ft_min_word_len | 4     |
+-----------------+-------+
1 row in set (0.00 sec)

mysql> SHOW CREATE TABLE articles\G
*************************** 1. row ***************************
       Table: articles
Create Table: CREATE TABLE `articles` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(200) DEFAULT NULL,
  `body` text,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `title` (`title`,`body`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('database' WITH QUERY EXPANSION);
+----+-------------------+------------------------------------------+
| id | title             | body                                     |
+----+-------------------+------------------------------------------+
|  1 | MySQL Tutorial    | DBMS stands for DataBase ...             |
|  5 | MySQL vs. YourSQL | In the following database comparison ... |
|  3 | Optimizing MySQL  | In this tutorial we will show ...        |
+----+-------------------+------------------------------------------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('data' WITH QUERY EXPANSION);
Empty set (0.00 sec)
mysql full-text-search
  • 2 个回答
  • 4235 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve