专属集群MyBase的PostgreSQL实例支持自主可控的运维,包括安装软件、数据库超级账号登录、创建可外部登录的数据库超级账号、查看数据库实时日志、修改数据库参数等,本文介绍了自主运维的具体操作方法。

背景信息

专属集群MyBase以集群形式可提供资源调度、主机管理、实例管理。具有云资源独享、支持资源超分配,自主可运维、开放部分数据库和OS权限等特点,为企业级用户定制了优化的解决方案,更多信息,请参见基于MyBase构建自主可控数据库和高弹性应用实践

注意事项

专属集群MyBase是开放式的数据库服务,您拥有自主运维权限,但自主运维同时也会带来风险,在使用权限时请慎重,操作不当可能导致系统故障。

前提条件

已完成创建实例。具体操作,请参见创建集群添加主机创建实例

登录数据库

  1. 登录主机。具体操作,请参见通过Webshell访问主机
  2. 使用如下命令安装PostgreSQL客户端。
    sudo yum install postgresql
    说明
    • 安装软件需要添加yum或rpm权限,apsaradb组的用户可以root身份执行sudo yum,关于主机权限的具体信息,请参见主机权限说明
    • 当yum仓库中的PostgreSQL版本不是最新或不是预期版本时,您可以通过如下方法安装:
      • 使用lrzsz工具从本地上传软件包后安装。
      • 在ECS实例中下载软件包后,在MyBase主机上使用scp将ECS上的软件包拷贝到MyBase主机进行编译安装。
  3. 使用超级账号登录数据库。
    1. 进入数据库数据目录。
      cd /disk17659373/pgsql/17659373/data/
      说明 数据库数据目录示例: /disk17659373/pgsql/17659373/data/。其中 17659373为系统随机生成,使用时请进入系统根目录查看实际路径。
    2. 使用如下命令以超级账号登录数据库。
      psql -h `pwd` -p 3002 -U aurora postgres
  4. 登录数据库后,您可以根据业务需求对数据库进行自主运维,可执行的操作有:

创建可外部连接的数据库超级账号

由于aurora为pg_hba.conf中配置的内部账号,仅支持本地登录,当您需要在应用程序内通过数据库连接地址访问数据库时,专属集群MyBase的PostgreSQL实例支持创建外部连接数据库的超级账号。

  1. 查询当前账号。
    命令:
    \du+
    预期结果:
                                                                           List of roles  
             Role name         |                    Attributes                     |                          Member of                           | Description   
    ---------------------------+---------------------------------------------------+--------------------------------------------------------------+-------------  
     aurora                    | Superuser, Replication                            | {}                                                           |   
     pg45667359                | Superuser, Create role, Create DB, Replication    | {}                                                           |   
     pg_execute_server_program | Cannot login                                      | {}                                                           |   
     pg_monitor                | Cannot login                                      | {pg_read_all_settings,pg_read_all_stats,pg_stat_scan_tables} |   
     pg_rds_superuser          | Create role, Create DB, Cannot login, Replication | {}                                                           |   
     pg_read_all_settings      | Cannot login                                      | {}                                                           |   
     pg_read_all_stats         | Cannot login                                      | {}                                                           |   
     pg_read_server_files      | Cannot login                                      | {}                                                           |   
     pg_signal_backend         | Cannot login                                      | {}                                                           |   
     pg_stat_scan_tables       | Cannot login                                      | {}                                                           |   
     pg_write_server_files     | Cannot login                                      | {}                                                           |   
     replicator                | Superuser, Replication                            | {}                                                           |   
  2. 使用如下命令创建一个超级账号。
    create role new_dba encrypted password 'helloWorld#YekMyBase' superuser login;
    说明 本示例中new_dba为新创建用户的用户名,helloWorld#YekMyBase为新创建用户的密码。此处用户名密码仅为示例,为保证数据安全,请勿使用本示例中的用户名密码,请您根据实际情况创建。
  3. 再次执行如下命令验证账号是否创建成功。
    命令:
    \du+
    预期结果:
                                                                           List of roles  
             Role name         |                    Attributes                     |                          Member of                           | Description   
    ---------------------------+---------------------------------------------------+--------------------------------------------------------------+-------------  
     aurora                    | Superuser, Replication                            | {}                                                           |   
     new_dba                   | Superuser                                         | {}                                                           |   
     pg45667359                | Superuser, Create role, Create DB, Replication    | {}                                                           |   
     pg_execute_server_program | Cannot login                                      | {}                                                           |   
     pg_monitor                | Cannot login                                      | {pg_read_all_settings,pg_read_all_stats,pg_stat_scan_tables} |   
     pg_rds_superuser          | Create role, Create DB, Cannot login, Replication | {}                                                           |   
     pg_read_all_settings      | Cannot login                                      | {}                                                           |   
     pg_read_all_stats         | Cannot login                                      | {}                                                           |   
     pg_read_server_files      | Cannot login                                      | {}                                                           |   
     pg_signal_backend         | Cannot login                                      | {}                                                           |   
     pg_stat_scan_tables       | Cannot login                                      | {}                                                           |   
     pg_write_server_files     | Cannot login                                      | {}                                                           |   
     replicator                | Superuser, Replication                            | {}                                                           |   

查看实时日志

专属集群MyBase的PostgreSQL实例支持查看实时日志,具体步骤如下。

  1. 进入日志存放路径。
    cd /disk17659373/pgsql/17659373/data/log
    说明 数据库日志存放路径示例: /disk17659373/pgsql/17659373/data/log。其中 17659373为系统随机生成,使用时请进入系统根目录查看实际路径。
  2. 查看目录下的日志文件。
    命令:
    ll
    预期结果:
    -rw-r----- 1 pgsql apsaradb 111161 Apr  7 17:44 postgresql-2021-04-07_172939.csv  
    -rw-r----- 1 pgsql apsaradb 209440 Apr  7 17:44 postgresql-2021-04-07_172939.log    
  3. 使用如下命令查看日志文件。
    less postgresql-2021-04-07_172939.csv

修改任意参数

专属集群MyBase的PostgreSQL实例支持修改任意参数,修改方法如下:
  • 使用alter system命令修改参数。
    以修改 max_connections参数为例,将参数值修改为10000:
    alter system set max_connections=10000;
    注意
    • 修改数据库参数属于高风险操作,请谨慎修改,操作不当可能导致系统故障。
    • 您必须分别登录主库和备库所在主机修改参数,否则会导致专属集群MyBase的PostgreSQL实例主从间切换后参数不一致的情况,甚至引发故障。
    • 部分参数要求备库必须大于或等于主库。
    • 部分参数和系统资源相关,如果修改不合理可能导致数据库无法启动,例如semphor相关的参数。
    • 部分参数修改后不需要重启实例,通常5分钟左右可以生效;部分参数修改后需要重启实例才生效,具体请参见控制台上参数设置页面中,可修改参数页签内的是否重启列。
  • 编辑postgresql.conf和postgresql.auto.conf文件修改参数。
    注意 直接编辑配置文件修改参数属于高风险操作,请修改前务必对原配置文件进行备份,以便在因操作不当而导致系统故障时,及时进行恢复。