• mysql 学习


    UPDATE sms_config SET vendor_name='aaa',vendor_id='5',para4='4',para3='3',para2='2',para1='1'
    desc sms_config
    
    # 不要在你自己的数据库里面,执行
    use information_schema ## 查看表大小与数据库的大小
    select concat(round(sum(data_length/1024/1024),2),'MB') as data_length_MB, concat(round(sum(index_length/1024/1024),2),'MB') as index_length_MB from tables where table_schema='wacs_db' #数据库名 and table_name = 'ac_status'; #表名
    ##

    +----------------+-----------------+
    | data_length_MB | index_length_MB |
    +----------------+-----------------+
    | 20.95MB        | 0.14MB |
    +----------------+-----------------+
    1 row in set (0.00 sec)

    在经过多次试验之后终于解决了root登录问题。解决步骤如下
    
         $ sudo systemctl stop mysqld.service
         $ sudo systemctl set-environment MYSQLD_OPTS="--user=mysql --skip-grant-tables --skip-networking"
         $ sudo systemctl start mysqld.service    
         $ mysql -u root mysql
    
         mysql > UPDATE mysql.user SET authentication_string=PASSWORD("abcdef")  WHERE user='root' and host='localhost';
         mysql > flush privileges;
         mysql > quit
    
         $ sudo systemctl unset-environment MYSQLD_OPTS
         $ sudo systemctl restart mysqld.service
    --------------------- 
    作者:xgx2015 
    来源:CSDN 
    原文:https://blog.csdn.net/myth_xgx/article/details/50809645 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    在 MySQL 5.6.6 版本以前, MySQL 默认会把所有的 innodb 的表都放在同一个文件中(ibdata1),当该文件过大的时候, MySQL 容易出错,维护性能差。一个简单的办法是修改 MySQL 配置文件 /etc/my.cnf 后重启 [mysqld]

    innodb_file_per_table=1

    mysql> show variables like 'innodb_file_per_table';
    +-----------------------+-------+
    | Variable_name | Value |
    +-----------------------+-------+
    | innodb_file_per_table | ON |
    +-----------------------+-------+
    1 row in set (0.00 sec)

     

    查看MySQL版本

    /factory/database/mysql# mysql -V
    mysql Ver 14.14 Distrib 5.1.73, for openwrt-linux-gnu (x86_64) using readline 6.3

     创建事件event,每秒检测,当数据大于1000条就删除一条

    SET GLOBAL event_scheduler = ON;
    DROP EVENT IF EXISTS limit_ac_status;
    delimiter $
    CREATE EVENT limit_ac_status ON SCHEDULE EVERY 1 SECOND DO 
    IF (select count(*) from ac_status) > 10000 then 
        delete from ac_status limit 1;
    END IF $
    delimiter ;

    修改状态

    event_scheduler = 1

    查看状态

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


    use information_schema

    mysql> select EVENT_NAME from EVENTS;

    +-----------------+
    | EVENT_NAME |
    +-----------------+
    | limit_ac_status |
    +-----------------+
    1 row in set (0.00 sec)

    针对每个不同的存储引擎(engine),每个表的文件形式不同。在这之前,大家要知道,mysql每个表,其实以文件的形式存放在磁盘上的。
    如果是myisam的,那么一个表有如下三个文件:
    表名.frm:存放表结构的文件
    表名.MYD:存放表数据的文件
    表名.MYI:存放表索引的文件
    21.0M   ac_status.MYD
    144.0K  ac_status.MYI
    16.0K   ac_status.frm
    如果是innodb的:
    表名.frm:存放表结构
    表数据和索引放在一个文件中:ibdata

    数据库备份
    一种办法是用mysqldump备份所有数据库后重建所有数据库,步骤如下 
    1. mysqldump -u user -p password --all-databases > backup.sql导出所有数据 
    2. 删除所有数据库 drop database database_N 
    3. 停止MySQL服务service mysql stop如果是Mariadb就是service mariadb stop 
    4. 删除文件ibdata1, ib_logfile0, ib_logfile1 
    5. 重启MySQL服务service mysql start如果是Mariadb就是service mariadb start 
    6. 导入备份数据mysql -u user -p password --all-databases < backup.sql

    备份脚本(定时)

    #!/bin/sh
    mysqldump -u root -p123456 wacs_db > /etc/config/back_mysql.sql

      crontab -e

      50 23 * * * lua /usr/sbin/back_mysql.sh >> /dev/null 2>&1

  • 相关阅读:
    群辉:服务器错误 错误代码38
    wireshark filter manualpage
    收集下shell使用笔记
    Android kernel LOGO的更换方法
    java实现截屏
    [转]android4.0.3 修改启动动画和开机声音
    博客搬迁
    idea 2017.3创建springboot项目报无效的源发行版: 1.8或者Unsupported major.minor version 52.0的解决方案
    关于mybatis查询集合返回为[null]的问题
    关于mybatis中resultType返回null的问题
  • 原文地址:https://www.cnblogs.com/xiaohuamao/p/9197427.html
Copyright © 2020-2023  润新知