XSwitch运维手册
数据库
数据库默认用户名和密码都是xui,可以使用如下方法登录数据库:
make bash-pg psql -U xui xui
显示所有表:
\d
查询用户
select * from users limit 10;
修改用户密码
为方便修改用户密码,可以使用如下存储过程:
SELECT update_user_password(id, old_password, new_password, use_a1_hash);
参数说明:
id:用户 IDold_password:旧密码,字符串,可以为NULLnew_password:新密码,字符串use_a1_hash:是否使用 A1 哈希,布尔型。如果是,则密码使用 A1 哈希存储,否则使用明文密码
示例:
SELECT update_user_password(1, NULL, 'veryGOODpassw0rd', false); SELECT update_user_password(1, NULL, 'veryGooDpassw0rd', true);
修改域
如果域名改变或发生迁移,所有用户和分机的域都需要修改。
可以用如下存储过程批量修改域,以domain = xswitch.cn为例:
SELECT init_update_domain_user_extn('xswitch.cn');
修改数据库并发连接数
在 PostgreSQL 中系统默认最大并发连接数为100,可以使用show max_connections;查看。
查看正在使用的连接数:
SELECT count(*) from pg_stat_activity;
postgresql.conf配置中的max_connections是设置到数据库服务器的最大并发连接数。
文件位置/var/lib/postgresql/data/pgdata/postgresql.conf,如果不在也可以用 find / -name "postgresql.conf"查找。
修改文件中的max_connections = 100选项,重启服务器即可(修改数量可根据需求及版本限制进行修改)。
开启数据库运行日志
为方便排查数据库异常情况,可以开启 PostgreSQL 运行日志。
编辑postgresql.conf文件(位置参见上节),修改或添加以下配置:
logging_collector = on log_directory = 'log' log_filename = 'postgresql-%Y-%m-%d.log' log_statement = 'all' log_min_duration_statement = 1000 log_line_prefix = '%m [%p] %u@%d '
参数说明:
logging_collector:开启日志收集器,必须设为on。log_directory:日志存放目录,相对于 PostgreSQL 数据目录。log_filename:日志文件名格式,按日期分割便于管理。log_statement:记录哪些 SQL 语句。可选值为none、ddl、mod、all,生产环境建议设为ddl或mod,排查问题时可临时设为all。log_min_duration_statement:记录执行时间超过指定毫秒数的 SQL 语句(0表示记录所有,-1表示禁用),单位为毫秒。设为1000表示记录执行超过 1 秒的慢查询。log_line_prefix:日志行前缀格式,%m时间、%p进程 ID、%u用户名、%d数据库名。
修改后需要重启 PostgreSQL 服务生效:
make down && make up
如果希望不重启生效,部分参数可以通过 SQL 动态修改:
ALTER SYSTEM SET log_statement = 'all'; ALTER SYSTEM SET log_min_duration_statement = 1000; SELECT pg_reload_conf();
日志文件位于容器内 PostgreSQL 数据目录的log子目录下,通过以下命令查看:
make bash-pg ls -l /var/lib/postgresql/data/pgdata/log/
注意:log_statement = 'all' 会记录所有 SQL 语句,对性能有一定影响且会产生大量日志,排查完毕后建议改回ddl或none。