PostgreSQL Replication Solutions

2,291 views
2,233 views

Published on

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,291
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
82
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

PostgreSQL Replication Solutions

  1. 1. PostgreSQL Replication Solutions BRUCE MOMJIAN, ENTERPRISEDB December, 2008 Abstract Replication is a complex feature. POSTGRESQL supports a variety of replication options. http://momjian.us/presentations
  2. 2. Uses for Replication Theolotech.com PostgreSQL Replication Solutions 1
  3. 3. 2 ©¨ ©¨ §¦ §¦ §¦ §¦ ©¨ ©¨ §¦ §¦ §¦ §¦ ¨©¨© §§ § ¦¦§ ¦¦ ©¨ ©¨ §¦ §¦ §¦ §¦ ©¨ ©¨ §¦ §¦ §¦ §¦ Fail Over ¡  ¡  £¢ £¢ £¢ £¢ ¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¡  ¡  £¢ £¢ £¢ £¢ ¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ PostgreSQL Replication Solutions ¡  ¡  £¢ £¢ £¢ £¢ ¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¡  ¡  £¢ £¢ £¢ £¢ ¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¡  ¡  £¢ £¢ £¢ £¢ ¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤
  4. 4. 3 ©¨ ©¨ §¦ §¦ §¦ §¦ ©¨ ©¨ §¦ §¦ §¦ §¦ ©¨ ©¨ §¦ §¦ §¦ §¦ ©¨ ©¨ §¦ §¦ §¦ §¦ ¨© ¨© §§§§ ¦ ¦ ¦ ¦ Load Balancing ¡  ¡  £¢ £¢ £¢ £¢ ¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¡  ¡  ¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ PostgreSQL Replication Solutions £¢ £¢ £¢ £¢  ¡  ¡ ££££¤¥¤¥¤¥¤¥¤¥¤¥¤¥¤ ¢ ¢ ¢ ¢ ¡  ¡  £¢ £¢ £¢ £¢ ¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤  ¡  ¡ ££££¤¥¤¥¤¥¤¥¤¥¤¥¤¥¤ ¢ ¢ ¢ ¢
  5. 5. 4 ©¨ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ §¦ §¦ §¦ ©¨ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ §¦ §¦ §¦ ©¨ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ §¦ §¦ §¦ ©¨ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ §¦ §¦ §¦ ©©©©§§¦ §¦ §§§§¦ ¦ § ¦ ¨ ¨¨¨ ¦ ¦ ¦ ¦ Data Warehousing ¥¤ ¥¤ £¢ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¥¤ ¥¤ £¢ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¤¥¤¥ ££££¡¡  ¡  ¡¡¡¡    ¡   PostgreSQL Replication Solutions ¢ ¢¢¢         ¥¤ ¥¤ £¢ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¤¥¤¥ ££££¡¡  ¡  ¡¡¡¡    ¡   ¢ ¢¢¢        
  6. 6. ©¨ ©¨ ¡  ¡  ¡  ¡  5 ©¨ ©¨ ¡  ¡  ¡  ¡  ©¨ ©¨ ¡  ¡  ¡  ¡  ©¨ ©¨ ¡  ¡  ¡  ¡  ©¨ ©¨ ¡  ¡  ¡  ¡  Remote Servers £¢ £¢ ¥¤ ¥¤ ¥¤ ¥¤ §¦ §¦ §¦ §¦ §¦ §¦ §¦ £¢ £¢ ¥¤ ¥¤ ¥¤ ¥¤ §¦ §¦ §¦ §¦ §¦ §¦ §¦ PostgreSQL Replication Solutions ¢£ ¢£¥¥¥¥¦§¦§¦§¦§ ¦§¦§¦§ ¤ ¤¤ ¤ £¢ £¢ ¥¤ ¥¤ ¥¤ ¥¤ §¦ §¦ §¦ §¦ §¦ §¦ §¦ £¢ £¢ ¥¤ ¥¤ ¥¤ ¥¤ §¦ §¦ §¦ §¦ §¦ §¦ §¦
  7. 7. 6 Mobile Servers PostgreSQL Replication Solutions   ¡  ¡  ¥¤ ¥¤ ¥¤ ¥¤ £¢ £¢ £¢ £¢ £¢ £¢ £¢   ¡  ¡  ¥¤ ¥¤ ¥¤ ¥¤ £¢ £¢ £¢ £¢ £¢ £¢ £¢   ¡  ¡  ¥¤ ¥¤ ¥¤ ¥¤ £¢ £¢ £¢ £¢ £¢ £¢ £¢   ¡  ¡  ¥¤ ¥¤ ¥¤ ¥¤ £¢ £¢ £¢ £¢ £¢ £¢ £¢ §§ ¡¨ ¦ §§ ¡¨ §§§§¥§¥§¥§¥§§§§§§¢£§§¢£§§¢£§§¢£§§¢£§§¢£§§¢£§¨ ¦ ¦ ¦ ¨ §¨ §¨ §¨ ¤§¨ ¤§¨ ¤§¨ ¤§¨ §¨ §¨ §¨ §¨ ¦ ¨ ¦ ¨ ¦ ¨ ¦ ¨ ¦ ¨ ¦ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
  8. 8. Replication Solutions Taotaomona Computing PostgreSQL Replication Solutions 7
  9. 9. 8 Slave cannot execute queries No data loss on fail-over No overhead Shared Storage Network−Attached Storage (NAS) ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ ¨© ¨© ¨© § ¦ § § § § ¦ ¦ ¦ ¦ ¦ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ PostgreSQL Replication Solutions ¥¤ ¥¤ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡  ¥¤ ¥¤ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡  ¢£ ¢£ ¢£ ¡   ¥ ¥ ¡ ¡ ¡ ¡ ¤ ¤           ¥¤ ¥¤ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡    ¡  ¡  ¡  ¡  ¡ 
  10. 10. 9 Synchronous or asynchronous Possible data loss on fail-over Slave cannot execute queries when using asynchronous No overhead on master Storage Mirroring ©¨ ©¨ ©¨ §¦ §¦ §¦ §¦ §¦ ©¨ ©¨ ©¨ §¦ §¦ §¦ §¦ §¦ ¨© ¨© ¨© § ¦ § § § § ¦ ¦ ¦ ¦ ©¨ ©¨ ©¨ §¦ §¦ §¦ §¦ §¦ PostgreSQL Replication Solutions DRBD ¤¥ ¥ ¤ £ ¢ £ ¢ £ ¢ ¡  ¡  ¡  ¡  ¡  ¥¤ ¥¤ £¢ £¢ £¢ ¡  ¡  ¡  ¡  ¡  ¡ ¡ ¡ ¡ ¥ ¥         ¤ ¤ ¢£¢£ ¢£ ¡   ¥¤ ¥¤ £¢ £¢ £¢ ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¡ 
  11. 11. 10 Allowing slaves to execute queries Synchronous and auto-fail-over Possible data loss on fail-over modes under development when using asychonous No overhead on master is under development Point-In-Time Recovery (PITR) ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ ¨© © ¨ © ¨ ¦ § ¦ § ¦ § ¦ § ¦ § ¦ § § § § ¨¨¨ § ¦ © © © ¦ ¦ ¦ ¦ ¦ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ ¦ §¦ §¦ §¦ §¦ §¦ Ahead (WAL) Write PostgreSQL Replication Solutions Log ¥¤ ¥¤ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡  ¥¤ ¥¤ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡  ¥ ¥ ¡ ¡ ¡ ¡ ¡   ¤ ¤ £ ¢ £ ¢ £ ¢           ¥¤ ¥¤ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡ 
  12. 12. 11 Replication possible even over Possible data loss on fail-over Table-level granularity allows Triggers add overhead to the Slave can execute read-only complex data partitioning configurations slow links queries master Slony ¨ ©¨ ©¨ ¡  ¡  ¡  ¡  ¨ ©¨ ©¨ ¡  ¡  ¡  ¡  ¨ ¨© ¨© ¡¡¡¡         ¨ ©¨ ©¨ ¡  ¡  ¡  ¡  ¨ ¨©¨©¡¡¡¡      ¡  ¡  ¡  ¡  Asynchronous PostgreSQL Replication Solutions ¢ £¢ £¢ ¥¤ ¥¤ ¥¤ ¥¤ §¦ §¦ §¦ §¦ §¦ §¦ §¦ ¢ £¢ £¢ ¥¤ ¥¤ ¥¤ ¥¤ §¦ §¦ §¦ §¦ §¦ §¦ §¦ ¢ ¢£ ¢£ ¥¥¥¥§¦§¦§¦§¦§¦§¦§¦ ¤ ¤ ¤ ¤ ¢ £¢ £¢ ¥¤ ¥¤ ¥¤ ¥¤ §¦ §¦ §¦ §¦ §¦ §¦ §¦ ¢ ¢£ ¢£ ¥¥¥¥§¦§¦§¦§¦§¦§¦§¦ ¤ ¤ ¤ ¤
  13. 13. 12 Slony - Cascading Slaves 54 54 32 32 32 10 10 10 10 10 )( )( ' ' ' $ %$ %$ %$ %$ %$ 54 54 32 32 32 10 10 10 10 10 )( )( ' ' ' $ %$ %$ %$ %$ %$ @ 5 7@ 5 7@ 79 9 9 @ 7@ 7@ 7@ 1 7@ 1 71 97@ 1 7 777723@ 7723@ 7723@ 777777@77@ 1 9 0 94 94 9 9 9 9 90 90 0 90 8 ) 7) 67 6 6 678 78 7% 678 % 78 % 78 % 7 78787677'8 77'8 787'678777877778 % 6 $ 6( ( 6 6$ $ 6$ 6$ 6$ 54 54 32 32 32 10 10 10 10 10 )( )( ' ' ' $ %$ %$ %$ %$ %$ # # ! ! ! # # ! ! ! 7777777777777P I P # 7P # 7P 7P !7P !7P !7P 7P 7P 7P 7P 7P 7P 7 I I I I I I I I I I I I I # # ! ! ! ¨ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ ¨ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ C77 G7C 7C 7BG77H7H77H7H7H7 H7HC7HC7¨B77¨©H77¨©H7HC7¨©7HC777HC7777HC § BG ¦ 7 BG7 BG BG BG7C 7C 7§ BG7C § 7C § 7C § 7 BG BG BG ¦ ¦ BG ¦ BG ¦ BG ¦ ¨ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ ¦ §¦ §¦ §¦ §¦ §¦ ¥¤ ¥¤ £¢ £¢ £¢ ¥¤ ¥¤ £¢ £¢ £¢ ¥ 7¥ 77£7£7£7777 7 7 A7 7 A A ¤ A ¤ A A ¢ A ¢ A ¢ A A A A A A ¥¤ ¥¤ £¢ £¢ £¢ ¡  ¡  ¡  ¡  F7F7F7DE77F 77F 7F7DE7F777F7777F DE ¡ 7¡ DE77D7D77DE7F 7F 7 DE7F 7F 7F 7 E    D77 E E 7D7D77D7D7D7 E E E E E ¡  ¡  PostgreSQL Replication Solutions
  14. 14. 13 Subscribers Other Subscriber ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ sl_log ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ modifications CREATE TRIGGER prevents Slony Internals % % % % % % % % # # # # # # # # $ $ $ $ $ $ $ $ © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ % % % % % % % % # # # # # # # # $ $ $ $ $ $ $ $ © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ % % % % % % % % # # # # # # # # $ $ $ $ $ $ $ $ © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ User © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Slonik fills sl_log TRIGGER CREATE ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             sl_log ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             Origin ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             CREATE ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             TABLE PostgreSQL Replication Solutions ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             ... ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             ! ! ! ! ! ! ! ! ' ' ' ' ' ' ' ' £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ! ! ! ! ! ! ! ! ' ' ' ' ' ' ' ' £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ User £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢
  15. 15. 14 Subscriber sl_log @ @ @ @ @ @ @ @ @A @A @A @A @A @A @A @A % % % % % % % % 9 9 9 9 9 9 9 9 $ $ $ $ $ $ $ $ 8 8 8 8 8 8 8 8 © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 A A A A A A A A % % % % % % % % 9 9 9 9 9 9 9 9 $ $ $ $ $ $ $ $ 8 8 8 8 8 8 8 8 © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 User © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 Slony Multi-Slave Subscriber sl_log ' ' ' ' ' ' ' ' 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 # # # # # # # # ! ! ! ! ! ! ! ! ' ' ' ' ' ' ' ' 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 # # # # # # # # ! ! ! ! ! ! ! ! # # # # # # # # ! ! ! ! ! ! ! ! User # # # # # # # # ! ! ! ! ! ! ! ! # # # # # # # # ! ! ! ! ! ! ! ! # # # # # # # # ! ! ! ! ! ! ! ! # # # # # # # # ! ! ! ! ! ! ! ! # # # # # # # # ! ! ! ! ! ! ! ! # # # # # # # # ! ! ! ! ! ! ! ! PostgreSQL Replication Solutions sl_log Origin ) ) ) ) ) ) ) ) 5 5 5 5 5 5 5 5 7 7 7 7 7 7 7 7 ( ( ( ( ( ( ( ( 4 4 4 4 4 4 4 4 6 6 6 6 6 6 6 6 £ £ £ £ £ £ £ £ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ § § § § § § § § ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ) ) ) ) ) ) ) ) 5 5 5 5 5 5 5 5 7 7 7 7 7 7 7 7 ( ( ( ( ( ( ( ( 4 4 4 4 4 4 4 4 6 6 6 6 6 6 6 6 £ £ £ £ £ £ £ £ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ § § § § § § § § ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ) ) ) ) ) ) ) ) 5 5 5 5 5 5 5 5 7 7 7 7 7 7 7 7 ( ( ( ( ( ( ( ( 4 4 4 4 4 4 4 4 6 6 6 6 6 6 6 6 User £ £ £ £ £ £ £ £ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ § § § § § § § § ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ £ £ £ £ £ £ £ £ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ § § § § § § § § ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ £ £ £ £ £ £ £ £ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ § § § § § § § § ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ £ £ £ £ £ £ £ £ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ § § § § § § § § ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ £ £ £ £ £ £ £ £ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ § § § § § § § § ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ £ £ £ £ £ £ £ £ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ § § § § § § § § ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

×