分类: 数据库相关

  • Firebird3.0安装使用

    Ubuntu20,apt安装

    apt install firebird3.0 firebird-dev firebird3.0-server firebird3.0-server-core firebird3.0-utils libdbd-firebird-perl

    测试数据库

    isql-fb /var/lib/firebird/3.0/system/security3.fdb -user sysdba -password masterkey

    重启服务

    service firebird3.0 restart
    配置文件目录

    /etc/firebird/3.0

    编辑 /etc/firebird/3.0/firebird.conf 文件
    
        DatabaseAccess = Full
        表示所有目录的数据库都可以访问
        DatabaseAccess = None
        表示只有“别名数据库”可以访问
        选择默认即可
    
        RemoteAccess = true
        允许远程访问,建议开启,要不然很多都操作不了
    
        RemoteBindAddress = localhost
        远程访问地址绑定,有非本机(127.0.0.1)访问需求的,把这行注释掉加#,建议注释掉
        Firebird2.5版本
        RemoteBindAddress = 0.0.0.0
    

    问题

    connection rejected by remote interface

    编辑/etc/firebird/3.0/firebird.conf,
    取消注释(如果使用fbclient 2.x),
    并更改以下参数以禁用WireCrypt并为旧式身份验证设置更高的优先级:
    
    WireCrypt = Disabled
    AuthServer = Legacy_Auth, Srp, Win_Sspi
    AuthClient = Legacy_Auth, Srp, Win_Sspi
    
    
  • 512M内存 MYSQL的my.cnf

    # Example MySQL config file for medium systems.
    #
    # This is for a system with little memory (32M – 64M) where MySQL plays
    # an important part, or systems up to 128M where MySQL is used together with
    # other programs (such as a web server)
    #
    # MySQL programs look for option files in a set of
    # locations which depend on the deployment platform.
    # You can copy this option file to one of those
    # locations. For information about these locations, see:
    # http://dev.mysql.com/doc/mysql/en/option-files.html
    #
    # In this file, you can use all long options that a program supports.
    # If you want to know which options a program supports, run the program
    # with the “–help” option.
    # The following options will be passed to all MySQL clients
    [client]
    #character-set-server=utf8
    #password = your_password
    #host = localhost
    port = 3306
    socket = /tmp/mysql.sock

    # Here follows entries for some specific programs

    # The MySQL server
    [mysqld]
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    #character-set-server=utf8
    tmpdir= /tmp
    port = 3306
    socket = /tmp/mysql.sock
    skip-external-locking
    log-error=/alidata/log/mysql/error.log
    key_buffer_size = 16M
    max_allowed_packet = 1M
    table_open_cache = 64
    sort_buffer_size = 512K
    net_buffer_length = 8K
    read_buffer_size = 256K
    read_rnd_buffer_size = 512K
    myisam_sort_buffer_size = 8M

    # Don’t listen on a TCP/IP port at all. This can be a security enhancement,
    # if all processes that need to connect to mysqld run on the same host.
    # All interaction with mysqld must be made via Unix sockets or named pipes.
    # Note that using this option without enabling named pipes on Windows
    # (via the “enable-named-pipe” option) will render mysqld useless!
    #
    #skip-networking

    # Replication Master Server (default)
    # binary logging is required for replication
    log-bin=mysql-bin

    # binary logging format – mixed recommended
    binlog_format=mixed

    # required unique id between 1 and 2^32 – 1
    # defaults to 1 if master-host is not set
    # but will not function as a master if omitted
    server-id = 1

    #innodb_use_sys_malloc = 1
    #innodb_change_buffering = all
    #innodb_file_format_check = 1
    #innodb_max_dirty_pages_pct = 75

    #innodb_data_home_dir = /alidata/server/mysql/data/
    #innodb_data_home_dir = /var/lib/mysql/
    #innodb_data_file_path = ibdata1:1024M;ibdata2:512M:autoextend
    #innodb_log_group_home_dir = /alidata/server/mysql/data
    #innodb_log_group_home_dir = /var/lib/mysql/

    #innodb_log_buffer_size = 16M
    #innodb_log_file_size = 64M
    #innodb_log_files_in_group = 2
    #innodb_additional_mem_pool_size = 8M
    #innodb_flush_log_at_trx_commit = 1
    #innodb_lock_wait_timeout = 50

    #innodb_buffer_pool_size = 16M

    [mysqldump]
    quick
    max_allowed_packet = 32M

    [mysql]

    no-auto-rehash
    # Remove the next comment character if you are not familiar with SQL
    #safe-updates

    [myisamchk]
    key_buffer_size = 20M
    sort_buffer_size = 20M
    read_buffer = 2M
    write_buffer = 2M

    [mysqlhotcopy]
    interactive-timeout
    expire_logs_days = 5
    max_binlog_size = 1000M

    内存太小,加点SWAP:

    dd if=/dev/zero of=/swapfile bs=1M count=1024 #增加1G的SWAP进去
    mkswap /swapfile
    swapon /swapfile
    free

    添加这行: /swapfile swap swap defaults 0 0 到 /etc/fstab

  • mysql初始化警告

    初始化时出现以下警告
    Initializing MySQL database: WARNING: The host ‘sdjcdata’ could not be looked up with resolveip.
    按提示,把/etc/hosts添加IP和主机名即可
    如[root@ www.linuxidc.com etc]# cat /etc/hosts

    [root@ www.linuxidc.com etc]# cat /etc/hosts
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.10.37 fengzhige
    192.168.11.37 fengzhige

  • ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

    1. mysql> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘123’);
    2. ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

    【原因】

    原来MySQL5.6.6版本之后增加了密码强度验证插件validate_password,相关参数设置的较为严格。
    使用了该插件会检查设置的密码是否符合当前设置的强度规则,若不满足则拒绝设置。影响的语句和函数有:create user,grant,set password,password(),old password。

    【解决】

    1) 查看mysql全局参数配置

    该问题其实与mysql的validate_password_policy的值有关。
    查看一下msyql密码相关的几个全局参数:

     

    解决:

    set global validate_password_policy=0;
    Query OK, 0 rows affected (0.00 sec)

    mysql> set global validate_password_mixed_case_count=0;
    Query OK, 0 rows affected (0.00 sec)

    mysql> set global validate_password_number_count=3;
    Query OK, 0 rows affected (0.00 sec)

    mysql> set global validate_password_special_char_count=0;
    Query OK, 0 rows affected (0.00 sec)

    mysql> set global validate_password_length=3;
    Query OK, 0 rows affected (0.00 sec)

    mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘123456’;
    Query OK, 0 rows affected (0.00 sec)

    mysql> SHOW VARIABLES LIKE ‘validate_password%’;
    SHOW VARIABLES LIKE ‘validate_password%’;
    +————————————–+——-+
    | Variable_name | Value |
    +————————————–+——-+
    | validate_password_check_user_name | OFF |
    | validate_password_dictionary_file | |
    | validate_password_length | 3 |
    | validate_password_mixed_case_count | 0 |
    | validate_password_number_count | 3 |
    | validate_password_policy | LOW |
    | validate_password_special_char_count | 0 |
    +————————————–+——-+
    7 rows in set (0.00 sec)

  • SQLServer 2008安装提示需要重启计算机,但是重启还是不通过解决方案

    SQLServer 2008安装提示需要重启计算机,但是重启还是不通过解决方案

    有的人可能在SQL 2008安装时提示需要重启计算机,但是重启电脑后还是检测不通过。

    处理方法:

    在 开始-程序-运行中(或者直接windows+R件同时),输入regedit回车,在注册表中找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations删除,就搞定

    如果第一次提示重启,可以重启电脑厚再执行安装,也可以直接删注册表解决,如果重启还没用,那就需要大家动手删除注册表中的一个键值。

    为什么要删注册表呢?因为你的电脑上可能有安装挂起的任务会写入注册表,如果有安装挂机的任务,数据库就不能正确安装,只要删除了这个注册表的值就可以了。

    怎么删除?

    按照上面的方法。 开始-程序-运行中(或者直接windows+R件同时),输入regedit回车,在注册表中找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations删除,就搞定

  • postgresql备份

    全库备份
    pg_dumpall -U postgres | gzip > xxx.sql.gz
    单个库备份
    pg_dump -d xxx -U postgres | gzip > xxx.sql.gz

    错误:
    pg_dump: Error message from server: ERROR:  character 0xc2a0 of encoding “UTF8” has no equivalent in “GBK”
    设置 正确的字符集

    #!/bin/bash
    export PGCLIENTENCODING=UTF8
    d=`date +%d`
    /usr/bin/pg_dumpall -U postgres | gzip > /mnt/pgdbbackup/pgbak/pgdball$d.bak.gz

    PostgreSQL备份与恢复示例
    一、简介
    Postgresql的备份分为三种:
    l SQL转储
    l 文件系统级别备份(冷备份)
    l 在线热备份(归档)
    以下通过实例来讲解PostgreSQL的三种备份。
    二、 SQL转储
    (一)pg_dump
    1,创建数据库
    createdb pg
    2,连入数据库pg
    psql pg
    3,创建测试表,插入数据
    pg=# create table pg_test(a int);
    pg=# insert into pg_test(a) values(1);
    pg=# insert into pg_test(a) values(2);
    4,查看数据
    pg=# select * from tb;
    a

    1
    2
    (2 rows)
    5,备份
    pg_dump pg > /usr/local/pgsql/backup/pg.dmp
    6,删除数据库pg
    dropdb pg
    7,创建新数据库(恢复之前需创建数据库)
    createdb pg
    8,恢复数据
    psql pb < /usr/local/pgsql/backup/pg.dmp
    9,查看数据是否回复
    pg=# select * from tb;
    a

    1
    2
    (2 rows)
    至此,数据已成功恢复!
    注:pg_dump可以对针对单表或者多表进行备份
    如:pg_dump databasename –t tablename1 –t tablename2 >filename
    (二)pg_dumpall
    pg_dump只能备份单个数据库,而且恢复的时候需要创建空数据库。pg_dumpall可以备份所有数据库,并且备份角色、表空间。
    1,创建数据库
    createdb pg1
    createdb pg2
    2, pg1中创建表并插入数据
    psql pg1
    pg=# create table tb1(a int)
    pg=# insert into tb1(a) values(1);
    3, pg2中创建表并插入数据
    psql pg2
    pg=# create table tb2(a int)
    pg=# insert into tb2(a) values(2);
    4,备份数据库
    pg_dumpall > /usr/local/pgsql/backup/pg_all.dmp
    5,删除数据库
    dropdb pg1
    dropdb pg2
    6,恢复数据库
    psql –f /usr/local/pgsql/backup/pg_all.dmp postgres
    可以指定任何数据库名,如果恢复到一个空的集群中,通常使用postgres数据库
    7,查看数据库pg1是否恢复
    psql pg1
    pg=# select * from tb1;
    a

    1
    (1 rows)
    8,查看数据库pg2是否恢复
    psql pg2
    pg=# select * from tb2;
    a

    2
    (1 rows)
    至此,数据已成功恢复!
    (三)备份压缩与分割
    压缩与分割的原理都是利用Linux的管线(PIPE)命令,不再进行试验。
    1)压缩
    l 备份:
    pg_dump dbname | gzip > filename.gz
    l 恢复
    gunzip -c filename.gz | psql dbname
    2)分割
    l 备份:
    pg_dump dbname | split -b1m- filename
    l 恢复
    cat filename* | psql dbname
    三、文件系统级别备份(冷备份)
    文件系统级别的备份是冷备份,需要停止数据库。
    1,停止数据库
    pg_ctl –D /usr/local/pgsql/data stop
    2,备份数据库
    tar –jcv –f /usr/local/pgsql/backup/filesystem.tar.bz2 /usr/local/pgsql/data/
    3,删除/usr/local/pgsql/data/目录

    rm –r /usr/local/pgsql/data/
    4,解压备份文件到原目录
    tar –jxv –f /usr/local/pgsql/backup/filesystem.tar.bz2 –C /
    5,启动数据库
    pg_ctl –D /usr/local/pgsql/data start
    6,查看数据库pg1是否恢复
    psql pg1
    pg=# select * from tb1;
    a

    1
    (1 rows)
    7,查看数据库pg2是否恢复
    psql pg2
    pg=# select * from tb2;
    a

    2
    (1 rows)
    至此,数据已成功恢复!
    四、在线热备份(归档)
    (一)备份
    1,配置归档模式
    配置归档需要编辑postgresql.conf文件,默认为与/usr/local/pgsql/data/目录下
    vim /usr/local/pgsql/data/postgesql.conf
    archive_mode = on
    archive_command = ‘cp %p /usr/local/pgsql/backup/archived_log/%f’
    注:%p要被归档的日志文件的路径,%f是要被归档的日志文件的文件名
    2,启动数据库
    pg_ctl –D /usr/local/pgsql/data start
    3,创建数据库arch
    createdb arch
    4,创建表并插入记录
    psql arch
    arch=# create table tb(a int);
    arch=# insert into tb(a) values(1);
    5,创建备份
    arch=# select pg_start_backup(‘baseline’);
    6,备份整个data目录
    tar –jcv –f /usr/local/pgsql/backup/baseline.tar.bz2 /usr/local/pgsql/data/
    7,停止备份
    psql arch
    arch=# select pg_stop_backup();
    8,插入新记录,然后切换日志,重复3次
    arch=# insert into tb(a) values(2);
    arch=# select pg_switch_xlog();
    arch=# insert into tb(a) values(3);
    arch=# select pg_switch_xlog();
    arch=# insert into tb(a) values(4);
    arch=# select pg_switch_xlog();
    9,把/data/pg_xlog/下的WAL日志文件复制到预设的归档目录下,保证产生的WAL日志都已归档。
    (二)恢复
    1,停止数据库
    pg_ctl –D /usr/local/pgsql/data/ stop
    2,删除/data/
    rm –r /usr/local/pgsql/data/
    3,恢复备份
    tar –jxv –f /usr/local/pgsql/backup/baseline.tar.bz2 –C /
    4,清空/data/pg_xlog/目录下所有文件
    rm –r /usr/local/pgsql/data/pg_xlog/
    5,创建/pg_xlog/及其下面的archive_status目录
    mkdir /usr/local/pgsql/data/pg_xlog/
    mkdir /usr/local/pgsql/data/pg_xlog/archive_status
    6,在/data/目录下创建recovery.conf
    vim /usr/local/pgsql/data/recovery.conf
    restore_command = ‘cp /usr/local/pgsql/backup/archived_log/%f “%p”’
    7,启动数据库
    pg_ctl –D /usr/local/pgsql/data/ start
    一切正常的话数据库就会自动应用WAL日志进行恢复
    8,查看数据库arch是否恢复
    psql arch
    arch=# select * from tb;
    a

    1
    2
    3
    4
    (4 rows)
    至此,数据已经成功恢复!

  • Firebird安装问题

    rpm -ivh FirebirdSS-2.1.6.18547-0.amd64.rpm
    error: Failed dependencies:
    libncurses.so.5 is needed by FirebirdSS-2.1.6.18547-0.amd64
    libstdc++.so.5 is needed by FirebirdSS-2.1.6.18547-0.amd64

    yum install ncurses-libs.i686 ncurses-devel.i686
    解决 libncurses.so.5 is needed by FirebirdSS-2.1.6.18547-0.amd64

    yum install compat-libstdc++-33.x86_64 compat-libstdc++-33.i686 compat-libstdc++-296.i686  libstdc++-devel.i686 libstdc++-devel.x86_64
    解决 libstdc++.so.5 is needed by FirebirdSS-2.1.6.18547-0.amd64

    思路:
    首先找台没问题的服务器
    find / -name libncurses.so.5
    find / -name libstdc++.so.5

    /lib/libncurses.so.5
    /lib64/libncurses.so.5

    /usr/lib/libstdc++.so.5
    /usr/lib64/libstdc++.so.5

    rpm -qf /lib/libncurses.so.5
    ncurses-libs-5.7-3.20090208.el6.i686
    rpm -qf /lib64/libncurses.so.5
    ncurses-libs-5.7-3.20090208.el6.x86_64

    然后 yum 相对应的rpm包,即可解决类似问题。

    yum install postgresql-python postgresql-libs compat-postgresql-libs postgresql-server postgresql postgresql-devel

    yum install ncurses-libs.i686 ncurses-devel.i686 compat-libstdc++-33.x86_64 compat-libstdc++-33.i686 compat-libstdc++-296.i686 libstdc++.i686 libstdc++-devel.i686

    安装firebird 解决 libgds.so 不能加载的问题
    yum install ncurses-libs.i686 ncurses-devel.i686

    yum install compat-libstdc++-33.x86_64 compat-libstdc++-33.i686 compat-libstdc++-296.i686 libstdc++-devel.i686 libstdc++-devel.x86_64
    yum install firebird

    Centos7

    rpm -ivh FirebirdCS-2.5.5.26952-0.amd64.rpm
    Preparing… ################################# [100%]
    file / from install of FirebirdCS-2.5.5.26952-0.amd64 conflicts with file from package filesystem-3.2-25.el7.x86_64
    file /usr/lib64 from install of FirebirdCS-2.5.5.26952-0.amd64 conflicts with file from package filesystem-3.2-25.el7.x86_64

    解决办法

    Firebird-3.0.4.33054-0.amd64.tar.gz

    源码方式安装

    ./install.sh

    yum 提示缺少组件,按照提示完成安装

    changeServerMode.sh 选择服务器模式

    Which option would you like to choose: (super|classic) [super] 默认super

    Firebird启动,完成安装

  • 如何在Linux下运行Firebird SuperClassic服务器?

    Firebird 2.5 创制了一种新的架构:SuperClassic 。官方发布的FB2.5 Linux发行包同时包含了SuperClassic和Classic两种架构的文件,当你安装了官方的包时,它默认激活为Classic架构服务器。
    如果想把服务器架构切换到SuperClassic, 可以通过执行 changeMultiConnectMode.sh 来实现。
    执行命令后,得到提示:“Which option would you like to choose: multi-(process|thread) [process]“
    回答thread,可以激活为SuperClassic . 如果回答 process 会激活为Classic .

    Firebird SuperClassic 下面
    ps ax |grep fire
    2054 ?        S      0:00 /opt/firebird/bin/fbguard -pidfile /var/run/firebird/default.pid -daemon -forever
    2055 ?        Sl     0:00 /opt/firebird/bin/fb_smp_server

    Firebird SuperServer下面
    ps ax |grep fire
    6862 ?        S      0:00 /opt/firebird/bin/fbguard -f
    6863 ?        Sl    27:34 /opt/firebird/bin/fbserver