Hệ quản trị cơ sở dữ liệu - Postgre SQL
Bạn đang xem 20 trang mẫu của tài liệu "Hệ quản trị cơ sở dữ liệu - Postgre SQL", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- he_quan_tri_co_so_du_lieu_postgre_sql.pdf
Nội dung text: Hệ quản trị cơ sở dữ liệu - Postgre SQL
- Khoa Công Nghệ Thông Tin Trường Đại Học Cần Thơ Hệ quản trị cơ sở dữ liệu Đỗ Thanh Nghị dtnghi@cit.ctu.edu.vn Cần Thơ 24-04-2005
- Nội dung Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Khôi phục cơ sở dữ liệu 2
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Khôi phục cơ sở dữ liệu 3
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Mô hình client-server PostgreSQL Khôi phục cơ sở dữ liệu 4
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Kiến trúc hệ thống ở Backend Khôi phục cơ sở dữ liệu 5
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Giao tiếp client-server qua Libpq Khôi phục cơ sở dữ liệu 6
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Khôi phục cơ sở dữ liệu 7
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Môi trường cho PostgreSQL Khôi phục cơ sở dữ liệu Hệ điều hành Windows, Linux, Chọn Linux (Redhat 9.0, Fedora Core 3, Mandriva 10.2) Miễn phí Hỗ trợ đủ các công cụ & ngôn ngữ lập trình Đáp ứng được tốc độ / bảo mật 8
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Cấu trúc cây thư mục của Linux Khôi phục cơ sở dữ liệu /: thư mục gốc /etc: các tập tin cấu hình /dev: các tập tin thiết bị /bin, /sbin: lệnh thực thi thường dùng của Linux /home: thư mục chứa các thư mục người dùng /usr: tài nguyên dành cho người dùng, thư viện tĩnh hoặc chia sẽ /usr/local, /opt: phần mềm /var: dữ liệu thay đổi, tập tin log, web server, email, máy in, etc. Các thư mục khác /root, /mnt, /tmp, /proc, /lib, /boot, 9
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Download PostgreSQL dạng *.rpm Khôi phục cơ sở dữ liệu Web site: Tập tin *.rpm Giả sử với hệ điều hành Linux, Fedora Core 3 Cài đặt các packages: rpm -ivh *.rpm Tự động tạo ra DB Admin tên postgres 10
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Download tập tin mã nguồn Khôi phục cơ sở dữ liệu PostgreSQL dạng *.tar.gz Web site: Tập tin *.tar.gz: chẳng hạn, postgresql-8.0.3.tar.gz Giải nén bằng lệnh: gzip -d postgresql-8.0.3.tar.gz Ta sẽ có tập tin postgresql-8.0.3.tar Mở tập tin postgresql-8.0.3.tar Sử dụng lệnh: tar -xvf postgresql-8.0.3.tar Ta sẽ có thư mục postgresql-8.0.3 Chuyển vào thư mục postgresql-8.0.3 Sử dụng lệnh: cd postgresql-8.0.3 11
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Dịch tập tin mã nguồn PostgreSQL Khôi phục cơ sở dữ liệu Biên dịch và cài đặt postgreSQL Phải chuyển sang người dùng root (su root hay login như root) Tạo tập tin cấu hình: ./configure Biên dịch: gmake Giả sử quá trình biên dịch kết thúc và thành công Cài đặt: gmake install PostgreSQL sẽ được cài đặt ở thư mục: /usr/local/pgsql Tạo DB Admin tên postgres: useradd Đổi password cho postgres: passwd postgresql 12
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Dịch tập tin mã nguồn PostgreSQL Khôi phục cơ sở dữ liệu Biên dịch và cài đặt postgreSQL Phải chuyển sang người dùng root (su root hay login như root) Tạo tập tin cấu hình: ./configure Biên dịch: gmake Giả sử quá trình biên dịch kết thúc và thành công Cài đặt: gmake install PostgreSQL sẽ được cài đặt ở thư mục: /usr/local/pgsql Tạo DB Admin tên postgres: useradd Đổi password cho postgres: passwd postgresql Dùng lệnh: cat /etc/passwd postgres:x:79:79:system user for postgresql:/var/lib/pgsql:/bin/bash /var/lib/pgsql: có thể thay đổi trong lúc tạo DB Admin postgres 13
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Khởi tạo cơ sở dữ liệu Khôi phục cơ sở dữ liệu Khởi tạo cơ sở dữ liệu cho postgreSQL Chuyển sang người dùng postgres (su postgres hay login như postgres) Chuyển đến thư mục người dùng postgres (/var/lib/pgsql) Tạo thư mục chứa cơ sở dữ liệu: mkdir database Để khởi tạo /var/lib/pgsql/database sẽ chứa cơ sở dữ liệu Lệnh: initdb /var/lib/pgsql/database 14
- Kiến trúc cơ bản Cài đặt Màn hình sẽ xuất hiện Quản lý cơ sở dữ liệu Khôi phục cơ sở dữ liệu The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale en_GB. This locale setting will prevent the use of indexes for pattern matching operations. If that is a concern, rerun initdb with the collation order set to "C". For more information see the Administrator's Guide. Fixing permissions on existing directory /var/lib/pgsql/database/ ok creating directory /var/lib/pgsql/database/base ok creating directory /var/lib/pgsql/database/global ok creating directory /var/lib/pgsql/database/pg_xlog ok creating directory /var/lib/pgsql/database/pg_clog ok creating template1 database in /var/lib/pgsql/database/base/1 ok creating configuration files ok initializing pg_shadow ok enabling unlimited row size for system tables ok initializing pg_depend ok creating system views ok loading pg_description ok creating conversions ok setting privileges on built-in objects ok vacuuming database template1 ok copying template1 to template0 ok Success. You can now start the database server using: /usr/bin/postmaster -D /var/lib/pgsql/database/ or /usr/bin/pg_ctl -D /var/lib/pgsql/database/ -l logfile start 15
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Tập tin cấu hình Khôi phục cơ sở dữ liệu Các tập tin cấu hình của postgreSQL server Ở /var/lib/pgsql/database sẽ chứa tập tin cấu hình “postgresql.conf” “pg_hba.conf” “pg_ident.conf” 16
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu /var/lib/pgsql/database/postgresql.conf Khôi phục cơ sở dữ liệu CONNECTIONS AND AUTHENTICATION max_connections, listen_addresses, port, ssl, password_encryption, etc. RESOURCE USAGE shared_buffers, max_fsm_pages, max_files_per_process, etc. WRITE AHEAD LOG fsync, wal_sync_method, checkpoint_segments, etc. Các phần khác QUERY TUNING, ERROR REPORTING AND LOGGING, RUNTIME STATISTICS, CLIENT CONNECTION DEFAULTS, LOCK MANAGEMENT, VERSION/PLATFORM COMPATIBILITY. 17
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu /var/lib/pgsql/database/pg_hba.conf Khôi phục cơ sở dữ liệu PostgreSQL Client Authentication local DATABASE USER METHOD [OPTION] host DATABASE USER IP-ADDRESS IP-MASK METHOD [OPTION] hostssl DATABASE USER IP-ADDRESS IP-MASK METHOD [OPTION] hostnossl DATABASE USER IP-ADDRESS IP-MASK METHOD [OPTION] host DATABASE USER IP-ADDRESS/CIDR-MASK METHOD [OPTION] hostssl DATABASE USER IP-ADDRESS/CIDR-MASK METHOD [OPTION] hostnossl DATABASE USER IP-ADDRESS/CIDR-MASK METHOD [OPTION] 18
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu /var/lib/pgsql/database/pg_ident.conf Khôi phục cơ sở dữ liệu PostgreSQL Ident Authentication Maps MAPNAME IDENT-USERNAME PG-USERNAME 19
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Starting PostgreSQL server Khôi phục cơ sở dữ liệu /usr/bin/postmaster –D /var/lib/pgsql/database & LOG: database system was shut down at 2005-06-14 08:28:40 BST LOG: checkpoint record is at 0/8018BC LOG: redo record is at 0/8018BC; undo record is at 0/0; shutdown TRUE LOG: next transaction id: 480; next oid: 16976 LOG: database system is ready /usr/bin/pg_ctl –D /var/lib/pgsql/database –l logfile start & 20
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Shutting down PostgreSQL server Khôi phục cơ sở dữ liệu /bin/kill -INT `head -1 /var/lib/pgsql/database/postmaster.pid` LOG: fast shutdown request LOG: shutting down LOG: database system is shut down /usr/bin/pg_ctl –D /var/lib/pgsql/database stop 21
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Khôi phục cơ sở dữ liệu 22
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Tạo cơ sở dữ liệu Khôi phục cơ sở dữ liệu Tạo cơ sở dữ liệu Chuyển sang người dùng postgres (su postgres hay login như postgres) Đọc trợ giúp của lệnh createdb /usr/bin/createdb help Tạo cơ sở dữ liệu (mydb): /usr/bin/createdb mydb 23
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Cài đặt ngôn ngữ thủ tục cho cơ sở dữ liệu Khôi phục cơ sở dữ liệu Cài đặt ngôn ngữ thủ tục cho cơ sở dữ liệu Chuyển sang người dùng postgres Đọc trợ giúp của lệnh createlang /usr/bin/createlang help Cài đặt ngôn ngữ PL/pgSQL tới cơ sở dữ liệu mydb /usr/bin/createlang plpgsql mydb 24
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Tạo người dùng trong hệ quản trị cơ sở Khôi phục cơ sở dữ liệu dữ liệu Tạo người dùng Chuyển sang người dùng postgres Đọc trợ giúp của lệnh createuser /usr/bin/createuser help Tạo người dùng (nghi): /usr/bin/createuser –P nghi Enter password for user « nghi »: Enter it again: Shall the new user be allowed to create databases? (y/n) y Shall the new user be allowed to create more new users? (y/n) n 25
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Xóa bỏ cơ sở dữ liệu, ngôn ngữ thủ tục Khôi phục cơ sở dữ liệu hay người dùng Xóa bỏ Chuyển sang người dùng postgres Đọc trợ giúp của lệnh: dropdb, droplang, dropuser /usr/bin/drop___ help Xóa cơ sở dữ liệu mydb1: /usr/bin/dropdb mydb1 Xóa ngôn ngữ plpgsql: từ cơ sở dữ liệu mydb1 /usr/bin/droplang plpgsql mydb1 Xóa người dùng nghi: /usr/bin/dropuser nghi 26
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Giao tiếp với cơ sở dữ liệu Khôi phục cơ sở dữ liệu Sử dụng psql Đọc hướng dẫn: psql help Giao tiếp với cơ sở dữ liệu mydb Trên máy cục bộ: psql -U username -W mydb Từ máy tính khác: psql –h servername -U username -W mydb Liệt kê các lệnh bên trong psql: mydb=# \? Tra cứu lệnh SQL: mydb=# \h SQL_command Thực thi lệnh SQL: mydb=# SQL_command; Thực thi tập tin lệnh SQL: psql –f file.sql mydb 27
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Phân quyền Khôi phục cơ sở dữ liệu Sử dụng psql Nối kết với cơ sở dữ liệu Sử dụng: grant, revoke Tra cứu lệnh grant, revoke: mydb=# \h grant|revoke Cho người dùng « nghi » có toàn quyền trên cơ sở dữ liệu « mydb »: mydb=# grant all on database mydb to nghi; Cho những người dùng trong nhóm « staff » có quyền thực hiện phép truy vấn trên bảng « tourists »: mydb=# grant select on tourists to group staff; Xóa tất cả quyền truy cập của tất cả người dùng tới bảng « cities »: mydb=# revoke all on cities from public; 28
- Kiến trúc cơ bản Cài đặt Các bảng hệ thống Quản lý cơ sở dữ liệu Khôi phục cơ sở dữ liệu Bảng Nội dung pg_aggregate Aggregates pg_attribute Columns pg_class Tables pg_database Databases pg_description Comment pg_group Group pg_index Indexes pg_log Transaction status pg_operator Operators pg_proc Functions pg_rewrite Rules and views pg_shadow Users pg_trigger Triggers pg_type Types 23 bảng hệ thống khác 29
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Giao diện đồ họa thân thiện cho việc Khôi phục cơ sở dữ liệu quản trị cơ sở dữ liệu Quản trị cơ sở dữ liệu với công cụ đồ họa thân thiện Miễn phí pgAdmin III phpPgAdmin pgaccess 30
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu pgAdmin III Khôi phục cơ sở dữ liệu 31
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu phpPgAdmin Khôi phục cơ sở dữ liệu 32
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu pgaccess Khôi phục cơ sở dữ liệu 33
- Kiến trúc cơ bản? Cài đặt Quản lý cơ sở dữ liệu Khôi phục cơ sở dữ liệu 34
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Backup cơ sở dữ liệu Khôi phục cơ sở dữ liệu Tại sao cần thiết phải backup cơ sở dữ liệu? Cơ sở dữ liệu bị hỏng hóc Do đĩa cứng bị hư, bị virus, cúp điện Hoặc do lỗi trong quá trình xử lý Dữ liệu mất tính nhất quán Để khắc phục sự cố này, chúng ta cần lưu dự phòng Khi gặp sự cố xãy ra, ta sẽ khôi phục lại trạng thái ban đầu từ bản lưu dự phòng của dữ liệu 35
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Backup cơ sở dữ liệu Khôi phục cơ sở dữ liệu Có nhiều chiến lược backup cơ sở dữ liệu SQL dump File system Online backup Replication (nhân bản) 36
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu SQL dump Khôi phục cơ sở dữ liệu Backup với pg_dump (pg_dumpall) Đọc trợ giúp: /usr/bin/pg_dump help Lưu cơ sở dữ liệu mydb ra tập tin mydb.txt /usr/bin/pg_dump mydb > mydb.txt Lưu bảng tourists của cơ sở dữ liệu mydb ra tập tin tourists.txt /usr/bin/pg_dump table=tourists mydb > tourists.txt Lưu cơ sở dữ liệu mydb ra tập tin dự phòng mydb.tar /usr/bin/pg_dump –Ft mydb > mydb.tar Lưu cơ sở dữ liệu mydb ra tập tin nén mydb.gz /usr/bin/pg_dump mydb | gzip > mydb.gz Chú ý với large objects 37
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu SQL dump Khôi phục cơ sở dữ liệu Khôi phục dữ liệu Phục hồi cơ sở dữ liệu mydb từ tập tin mydb.txt /usr/bin/psql –f mydb.txt mydb Phục hồi cơ sở dữ liệu mydb từ tập tin mydb.tar /usr/bin/pg_restore –d mydb mydb.tar Phục hồi cơ sở dữ liệu mydb từ tập tin mydb.gz /bin/cat mydb.gz | gunzip | /usr/bin/psql mydb Có thể lưu dự phòng Cơ sở dữ liệu mydb từ machine1 tới machine2 /usr/bin/pg_dump –h machine1 mydb | /usr/bin/psql –h machine2 mydb 38
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu File system Khôi phục cơ sở dữ liệu Backup với tar Lưu toàn bộ thư mục chứa cơ sở dữ liệu ra tập tin dự phòng Đọc trợ giúp: /bin/tar help Nhớ shutting down PostgreSQL server Lưu thư mục cơ sở dữ liệu /var/lib/pgsql/database ra tập tin database.tar /bin/tar -cvf database.tar /var/lib/pgsql/database Khôi phục lại toàn bộ thư mục chứa cơ sở dữ liệu /var/lib/pgsql/database từ tập tin database.tar /bin/tar -xvf database.tar 39
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Online backup Khôi phục cơ sở dữ liệu Point-in-Time Recovery Write-Ahead-Log mô tả tất cả các thay đổi Lưu dự phòng từng thời điểm những thay đổi Dựa trên đó, tìm ra được nguyên nhân gây hỏng hóc Khôi phục lại trạng thái ngay trước thời điểm xãy ra sự cố 40
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Online backup Khôi phục cơ sở dữ liệu Write-Ahead-Log Chú ý đến cấu hình postgresql.conf archive_command = on archive_command = 'cp %p wals/%f' Đừng quên tạo thư mục wals để lưu log Khởi động lại server Tất cả thông tin trong thư mục pg_xlog được sao chép tự động vào thự mục wals 41
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Online backup Khôi phục cơ sở dữ liệu Write-Ahead-Log Tạo 1 backup cơ sở SELECT pg_start_backup('label'); Dùng lệnh tar để lưu trữ 1 dự phòng của thư mục data tar –cvf bak.tar data Kết thúc việc tạo backup cơ sở SELECT pg_stop_backup(); 42
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Online backup Khôi phục cơ sở dữ liệu Point-in-Time Recovery Khi có sự cố, dừng server Chép thư mục pg_xlog ra pg_xlog.old Khôi phục bak.tar về data tar -xvf bak.tar Chép thư mục pg_xlog.old trở lại pg_xlog Tạo tập tin recovery.conf restore_command = 'cp wals/%f %p' recovery_target_time = '2008-11-25 18:08:06' Khởi động server khôi phục lại trạng thái ngay thời điểm recovery_target_time 43
- Kiến trúc cơ bản Cài đặt Quản lý cơ sở dữ liệu Nhân bản cơ sở dữ liệu Khôi phục cơ sở dữ liệu Có nhiều công cụ giúp nhân bản cơ sở dữ liệu pgpool (gửi đồng thời transaction tới 2 server, đồng bộ) Slony-I (master - multiple slaves, đồng bộ và bất đồng bộ) DBmirror (tạo bảng ảnh, đồng bộ và bất đồng bộ) pgcluster (nhân bản, đồng bộ) eRServer (master - multiple slaves, bất đồng bộ) pgReplicator (nhân bản, đồng bộ và bất đồng bộ) 44