cari
Rumahpangkalan datatutorial mysqlUsing MySQL Sandbox to setup a MySQL Fabric cluster in devel_MySQL

With Fabric's official GA release this week, I thought I would post a spin on how to setup a development environment loosely based on theFabric Quick Start guidein the manual.

The notable change, is the use of MySQL Sandbox for bootstrapping each of the MySQL instances.

Step 1: Install the MySQL Utilities + Python Connector

In my case, I downloaded:

  • mysql-utilities-1.4.3-osx10.7.dmgMac OS X 10.7 (Architecture Independent), DMG Archive
  • mysql-connector-python-1.2.2-osx10.7.dmgMac OS X 10.7 (Architecture Independent), DMG Archive

The GUI install in both cases works as expected. Next, Next, Done!

Step 2: Install MySQL Sandbox

MySQL Sandboxis available viaLaunchpadorCPAN. There isn't a major difference between the two, but I happened to choose CPAN.

The advantage of installing Sandbox over a utility such asmysqld_multi, is that it's much easier to setup and tear down replication.

Step 3: Download a 5.6 tarball

In my case, I downloadedmysql-5.6.17-osx10.7-x86.tar.gzMac OS X 10.7 (x86, 32-bit), Compressed TAR Archive. On Mac OS X it is useful to use Google Chrome rather than Safari, as you do not want the file automatically decompressed.

Important:Download only! MySQL Sandbox does the install in the next step.

Step 4: Setup the Fabric Backing Store

The first copy of MySQL to setup is the MySQL Fabric backing store. This will house thefabricschema which stores configuration data. Here is the setup line I used:

$ <strong>make_sandbox mysql-5.6.17-osx10.7-x86.tar.gz</strong>unpacking /Users/morgo/Downloads/mysql-5.6.17-osx10.7-x86.tar.gzExecuting low_level_make_sandbox --basedir=/Users/morgo/Downloads/5.6.17 /	--sandbox_directory=msb_5_6_17 /	--install_version=5.6 /	--sandbox_port=5617 /	--no_ver_after_name /	--my_clause=log-error=msandbox.err	The MySQL Sandbox,version 3.0.43	(C) 2006-2013 Giuseppe Maxiainstalling with the following parameters:upper_directory				= /Users/morgo/sandboxessandbox_directory			= msb_5_6_17sandbox_port				 = 5617check_port					 =no_check_port				=datadir_from				 = scriptinstall_version				= 5.6basedir						= /Users/morgo/Downloads/5.6.17tmpdir						 =my_file						=operating_system_user		= morgodb_user						= msandboxremote_access				= 127.%bind_address				 = 127.0.0.1ro_user						= msandbox_rorw_user						= msandbox_rwrepl_user					= rsandboxdb_password					= msandboxrepl_password				= rsandboxmy_clause					= log-error=msandbox.errmaster						 =slaveof						=high_performance			 =prompt_prefix				= mysqlprompt_body					=[/h] {/u} (/d) >force						=no_ver_after_name			= 1verbose						=load_grants					= 1no_load_grants				 =no_run						 =no_show						=do you agree? ([Y],n) Yloading grants.. sandbox server startedYour sandbox server was installed in $HOME/sandboxes/msb_5_6_17

Using a configuration similar to the MySQL manual, with the password simply beingsecretI saved the following to/etc/mysql/fabric.cfg:

[DEFAULT]prefix =sysconfdir = /etclogdir = /var/log[storage]address = localhost:5617user = fabricpassword = secretdatabase = fabricauth_plugin = mysql_native_passwordconnection_timeout = 6connection_attempts = 6connection_delay = 1[servers]user = fabricpassword = secret[protocol.xmlrpc]address = localhost:32274threads = 5user = adminpassword = secretdisable_authentication = norealm = MySQL Fabricssl_ca =ssl_cert =ssl_key =[executor]executors = 5[logging]level = INFOurl = file:///var/log/fabric.log[sharding]mysqldump_program = /usr/bin/mysqldumpmysqlclient_program = /usr/bin/mysql[statistics]prune_time = 3600[failure_tracking]notifications = 300notification_clients = 50notification_interval = 60failover_interval = 0detections = 3detection_interval = 6detection_timeout = 1prune_time = 3600[connector]ttl = 1[client]password =

I also need to create the user in MySQL for Fabric to connect as:

$ <strong>$HOME/sandboxes/msb_5_6_17/use -uroot</strong>Welcome to the MySQL monitor.Commands end with ; or /g.Your MySQL connection id is 5Server version: 5.6.17 MySQL Community Server (GPL)Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '/h' for help. Type '/c' to clear the current input statement.mysql [localhost] {root} ((none)) > <strong>CREATE USER 'fabric'@'localhost' IDENTIFIED BY 'secret';</strong>Query OK, 0 rows affected (0.01 sec)mysql [localhost] {root} ((none)) > <strong>GRANT ALL ON fabric.* TO 'fabric'@'localhost';</strong>Query OK, 0 rows affected (0.00 sec)

Fabric can then install the system tables, and be started with:

$ <strong>mysqlfabric manage setup</strong>[INFO] 1401222720.664261 - MainThread - Initializing persister: user (fabric), server (localhost:5617), database (fabric).[INFO] 1401222721.245034 - MainThread - Initial password for admin/xmlrpc setPassword set for admin/xmlrpc from configuration file.[INFO] 1401222721.247700 - MainThread - Password set for admin/xmlrpc from configuration file.$ <strong>mysqlfabric manage start</strong>[INFO] 1401222753.862997 - MainThread - Initializing persister: user (fabric), server (localhost:5617), database (fabric).[INFO] 1401222753.867357 - MainThread - Loading Services.[INFO] 1401222753.902501 - MainThread - Fabric node starting.[INFO] 1401222753.910188 - MainThread - Starting Executor.[INFO] 1401222753.910300 - MainThread - Setting 5 executor(s).[INFO] 1401222753.910602 - Executor-0 - Started.[INFO] 1401222753.911354 - Executor-1 - Started.[INFO] 1401222753.912450 - Executor-2 - Started.[INFO] 1401222753.913185 - Executor-3 - Started.[INFO] 1401222753.914456 - Executor-4 - Started.[INFO] 1401222753.914701 - MainThread - Executor started.[INFO] 1401222753.927123 - MainThread - Starting failure detector.[INFO] 1401222753.928365 - XML-RPC-Server - XML-RPC protocol server ('127.0.0.1', 32274) started.[INFO] 1401222753.928731 - XML-RPC-Server - Setting 5 XML-RPC session(s).[INFO] 1401222753.928991 - XML-RPC-Session-0 - Started XML-RPC-Session.[INFO] 1401222753.929455 - XML-RPC-Session-1 - Started XML-RPC-Session.[INFO] 1401222753.930168 - XML-RPC-Session-2 - Started XML-RPC-Session.[INFO] 1401222753.930747 - XML-RPC-Session-3 - Started XML-RPC-Session.[INFO] 1401222753.931320 - XML-RPC-Session-4 - Started XML-RPC-Session.

Step 5: Build out a HA group

The next step is to bootstrap a 3-node replication sandbox, and then add it as a HA Group in Fabric.

First with MySQL Sandbox:

$ <strong>make_replication_sandbox mysql-5.6.17-osx10.7-x86.tar.gz</strong>installing and starting masterinstalling slave 1installing slave 2starting slave 1.. sandbox server startedstarting slave 2.. sandbox server startedinitializing slave 1initializing slave 2replication directory installed in $HOME/sandboxes/rsandbox_mysql-5_6_17$ <strong>$HOME/sandboxes/rsandbox_mysql-5_6_17/m -uroot</strong>Welcome to the MySQL monitor.Commands end with ; or /g.Your MySQL connection id is 5Server version: 5.6.17-log MySQL Community Server (GPL)Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '/h' for help. Type '/c' to clear the current input statement.master [localhost] {root} ((none)) > <strong>GRANT ALL ON *.* TO 'fabric'@'localhost' IDENTIFIED BY 'secret';</strong>Query OK, 0 rows affected (0.01 sec)master [localhost] {root} ((none)) > <strong>SHOW GLOBAL VARIABLES LIKE 'port';</strong>+---------------+-------+| Variable_name | Value |+---------------+-------+| port| 20082 |+---------------+-------+1 row in set (0.00 sec)master [localhost] {root} ((none)) > <strong>exit</strong>Bye

Then with MySQL Fabric:

$ <strong>mysqlfabric group create GLOBAL1</strong>Procedure :{ uuid= 23593cf1-c516-46ef-beaa-516b333353ca,finished= True,success = True,return= True,activities=}$ <strong>mysqlfabric group add GLOBAL1 localhost:20082</strong>Procedure :{ uuid= e72decdf-6524-45b4-9eb6-6d757c0daf3a,finished= True,success = False,return= ServerError: Server (e208ca4a-e5df-11e3-9dd5-4cd7500a4330) does not have the binary log or gtid enabled.,activities=}

An error! What this error is saying, is that Fabric is designed to specifically take advantage of Replication with GTIDs which are designed to handle smoother failover if the topology changes. Thankfully, MySQL Sandbox has an easy way of being able toswitch to GTIDs:

$ <strong>$HOME/sandboxes/rsandbox_mysql-5_6_17/enable_gtid</strong># option 'master-info-repository=table' added to master configuration file# option 'relay-log-info-repository=table' added to master configuration file# option 'gtid_mode=ON' added to master configuration file# option 'log-slave-updates' added to master configuration file# option 'enforce-gtid-consistency' added to master configuration file# option 'master-info-repository=table' added to node1 configuration file# option 'relay-log-info-repository=table' added to node1 configuration file# option 'gtid_mode=ON' added to node1 configuration file# option 'log-slave-updates' added to node1 configuration file# option 'enforce-gtid-consistency' added to node1 configuration file# option 'master-info-repository=table' added to node2 configuration file# option 'relay-log-info-repository=table' added to node2 configuration file# option 'gtid_mode=ON' added to node2 configuration file# option 'log-slave-updates' added to node2 configuration file# option 'enforce-gtid-consistency' added to node2 configuration file# executing "stop" on /Users/morgo/sandboxes/rsandbox_mysql-5_6_17executing "stop" on slave 1executing "stop" on slave 2executing "stop" on master# executing "start" on /Users/morgo/sandboxes/rsandbox_mysql-5_6_17executing "start" on master. sandbox server startedexecuting "start" on slave 1. sandbox server startedexecuting "start" on slave 2. sandbox server started

With this change, adding servers to Fabric will now work:

$ <strong>mysqlfabric group add GLOBAL1 localhost:20082</strong>Procedure :{ uuid= c9da0536-0f3f-4d75-9f29-1ac6c12ff686,finished= True,success = True,return= True,activities=}$ <strong>mysqlfabric group add GLOBAL1 localhost:20083</strong>Procedure :{ uuid= 92b42645-311f-423b-86b4-3a56870db244,finished= True,success = True,return= True,activities=}$ <strong>mysqlfabric group add GLOBAL1 localhost:20084</strong>Procedure :{ uuid= 1f16a586-4a60-4b7d-a339-be3830614984,finished= True,success = True,return= True,activities=}

We can find group commands with:

$ <strong>mysqlfabric group</strong>Commands available in group 'group' are:	group activate group_id[--synchronous]	group description group_id[--description=NONE] [--synchronous]	group deactivate group_id[--synchronous]	group create group_id[--description=NONE] [--synchronous]	group remove group_id server_id[--synchronous]	group add group_id address[--timeout=5] [--update_only] [--synchronous]	group health group_id	group lookup_servers group_id[--server_id=NONE] [--status=NONE] [--mode=NONE]	group destroy group_id[--force] [--synchronous]	group demote group_id[--update_only] [--synchronous]	group promote group_id[--slave_id=NONE] [--update_only] [--synchronous]	group lookup_groups[--group_id=NONE]

Of which the useful option will be to list the servers in our groupGLOBAL1:

$ <strong>mysqlfabric group lookup_servers GLOBAL1</strong>Command :{ success = Truereturn= [{'status': 'SECONDARY', 'server_uuid': 'e208ca4a-e5df-11e3-9dd5-4cd7500a4330', 'mode': 'READ_ONLY', 'weight': 1.0, 'address': 'localhost:20082'}, {'status': 'SECONDARY', 'server_uuid': 'e931694e-e5df-11e3-9dd5-4cd64dfe115b', 'mode': 'READ_ONLY', 'weight': 1.0, 'address': 'localhost:20083'}, {'status': 'SECONDARY', 'server_uuid': 'ea61dfba-e5df-11e3-9dd5-4bd23bb2cbe3', 'mode': 'READ_ONLY', 'weight': 1.0, 'address': 'localhost:20084'}]activities=}

The UUID in use here, is the same one that is used for Replication with GTIDs. To promote the first server as a master:

$ <strong>mysqlfabric group promote GLOBAL1 --slave_id=e208ca4a-e5df-11e3-9dd5-4cd7500a4330</strong>Procedure :{ uuid= be791f70-be3e-4ee9-9872-e1cedce36791,finished= True,success = True,return= True,activities=}$ <strong>mysqlfabric group lookup_servers GLOBAL1</strong>Command :{ success = Truereturn= [{'status': 'PRIMARY', 'server_uuid': 'e208ca4a-e5df-11e3-9dd5-4cd7500a4330', 'mode': 'READ_WRITE', 'weight': 1.0, 'address': 'localhost:20082'}, {'status': 'SECONDARY', 'server_uuid': 'e931694e-e5df-11e3-9dd5-4cd64dfe115b', 'mode': 'READ_ONLY', 'weight': 1.0, 'address': 'localhost:20083'}, {'status': 'SECONDARY', 'server_uuid': 'ea61dfba-e5df-11e3-9dd5-4bd23bb2cbe3', 'mode': 'READ_ONLY', 'weight': 1.0, 'address': 'localhost:20084'}]activities=}

Next steps

This How-to can easily be extended tosetup additional HA groups for shards- MySQL Sandbox really simplifies the setup by bootstrapping replication.

One caveat to be aware of: Each copy ofmysqldrunning can take up quite a bit of RAM. It is possible totune this downusing some steps that I mentioned in an earlier post.

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
MySQL: Pengenalan kepada pangkalan data paling popular di duniaMySQL: Pengenalan kepada pangkalan data paling popular di duniaApr 12, 2025 am 12:18 AM

MySQL adalah sistem pengurusan pangkalan data relasi sumber terbuka, terutamanya digunakan untuk menyimpan dan mengambil data dengan cepat dan boleh dipercayai. Prinsip kerjanya termasuk permintaan pelanggan, resolusi pertanyaan, pelaksanaan pertanyaan dan hasil pulangan. Contoh penggunaan termasuk membuat jadual, memasukkan dan menanyakan data, dan ciri -ciri canggih seperti Operasi Join. Kesalahan umum melibatkan sintaks SQL, jenis data, dan keizinan, dan cadangan pengoptimuman termasuk penggunaan indeks, pertanyaan yang dioptimumkan, dan pembahagian jadual.

Kepentingan MySQL: Penyimpanan Data dan PengurusanKepentingan MySQL: Penyimpanan Data dan PengurusanApr 12, 2025 am 12:18 AM

MySQL adalah sistem pengurusan pangkalan data sumber terbuka yang sesuai untuk penyimpanan data, pengurusan, pertanyaan dan keselamatan. 1. Ia menyokong pelbagai sistem operasi dan digunakan secara meluas dalam aplikasi web dan bidang lain. 2. Melalui seni bina pelanggan-pelayan dan enjin penyimpanan yang berbeza, MySQL memproses data dengan cekap. 3. Penggunaan asas termasuk membuat pangkalan data dan jadual, memasukkan, menanyakan dan mengemas kini data. 4. Penggunaan lanjutan melibatkan pertanyaan kompleks dan prosedur yang disimpan. 5. Kesilapan umum boleh disahpepijat melalui pernyataan yang dijelaskan. 6. Pengoptimuman Prestasi termasuk penggunaan indeks rasional dan pernyataan pertanyaan yang dioptimumkan.

Mengapa menggunakan mysql? Faedah dan kelebihanMengapa menggunakan mysql? Faedah dan kelebihanApr 12, 2025 am 12:17 AM

MySQL dipilih untuk prestasi, kebolehpercayaan, kemudahan penggunaan, dan sokongan komuniti. 1.MYSQL Menyediakan fungsi penyimpanan dan pengambilan data yang cekap, menyokong pelbagai jenis data dan operasi pertanyaan lanjutan. 2. Mengamalkan seni bina pelanggan-pelayan dan enjin penyimpanan berganda untuk menyokong urus niaga dan pengoptimuman pertanyaan. 3. Mudah digunakan, menyokong pelbagai sistem operasi dan bahasa pengaturcaraan. 4. Mempunyai sokongan komuniti yang kuat dan menyediakan sumber dan penyelesaian yang kaya.

Huraikan mekanisme penguncian InnoDB (kunci yang dikongsi, kunci eksklusif, kunci niat, kunci rekod, kunci jurang, kunci seterusnya).Huraikan mekanisme penguncian InnoDB (kunci yang dikongsi, kunci eksklusif, kunci niat, kunci rekod, kunci jurang, kunci seterusnya).Apr 12, 2025 am 12:16 AM

Mekanisme kunci InnoDB termasuk kunci bersama, kunci eksklusif, kunci niat, kunci rekod, kunci jurang dan kunci utama seterusnya. 1. Kunci dikongsi membolehkan urus niaga membaca data tanpa menghalang urus niaga lain dari membaca. 2. Kunci eksklusif menghalang urus niaga lain daripada membaca dan mengubah suai data. 3. Niat Kunci mengoptimumkan kecekapan kunci. 4. Rekod Rekod Kunci Kunci Rekod. 5. Gap Lock Locks Index Rakaman Gap. 6. Kunci kunci seterusnya adalah gabungan kunci rekod dan kunci jurang untuk memastikan konsistensi data.

Apakah sebab -sebab biasa prestasi pertanyaan MySQL yang lemah?Apakah sebab -sebab biasa prestasi pertanyaan MySQL yang lemah?Apr 12, 2025 am 12:11 AM

Sebab -sebab utama prestasi pertanyaan MySQL yang lemah termasuk tidak menggunakan indeks, pemilihan pelan pelaksanaan yang salah oleh pengoptimasi pertanyaan, reka bentuk jadual yang tidak munasabah, jumlah data yang berlebihan dan persaingan kunci. 1. Tiada indeks menyebabkan pertanyaan perlahan, dan menambah indeks dapat meningkatkan prestasi dengan ketara. 2. Gunakan perintah Jelaskan untuk menganalisis pelan pertanyaan dan cari ralat pengoptimuman. 3. Membina semula struktur meja dan mengoptimumkan keadaan gabungan dapat meningkatkan masalah reka bentuk jadual. 4. Apabila jumlah data adalah besar, pembahagian dan strategi bahagian meja diterima pakai. 5. Dalam persekitaran konkurensi yang tinggi, mengoptimumkan urus niaga dan strategi mengunci dapat mengurangkan persaingan kunci.

Bilakah anda harus menggunakan indeks komposit berbanding indeks lajur tunggal?Bilakah anda harus menggunakan indeks komposit berbanding indeks lajur tunggal?Apr 11, 2025 am 12:06 AM

Dalam pengoptimuman pangkalan data, strategi pengindeksan hendaklah dipilih mengikut keperluan pertanyaan: 1. Apabila pertanyaan melibatkan pelbagai lajur dan urutan syarat ditetapkan, gunakan indeks komposit; 2. Apabila pertanyaan melibatkan pelbagai lajur tetapi urutan syarat tidak ditetapkan, gunakan pelbagai indeks lajur tunggal. Indeks komposit sesuai untuk mengoptimumkan pertanyaan berbilang lajur, manakala indeks lajur tunggal sesuai untuk pertanyaan tunggal lajur.

Bagaimana untuk mengenal pasti dan mengoptimumkan pertanyaan perlahan di MySQL? (Log pertanyaan perlahan, prestasi_schema)Bagaimana untuk mengenal pasti dan mengoptimumkan pertanyaan perlahan di MySQL? (Log pertanyaan perlahan, prestasi_schema)Apr 10, 2025 am 09:36 AM

Untuk mengoptimumkan pertanyaan perlahan MySQL, SlowQuerylog dan Performance_Schema perlu digunakan: 1. Dayakan SlowQueryLog dan tetapkan ambang untuk merakam pertanyaan perlahan; 2. Gunakan Performance_Schema untuk menganalisis butiran pelaksanaan pertanyaan, cari kesesakan prestasi dan mengoptimumkan.

MySQL dan SQL: Kemahiran Penting untuk PemajuMySQL dan SQL: Kemahiran Penting untuk PemajuApr 10, 2025 am 09:30 AM

MySQL dan SQL adalah kemahiran penting untuk pemaju. 1.MYSQL adalah sistem pengurusan pangkalan data sumber terbuka, dan SQL adalah bahasa standard yang digunakan untuk mengurus dan mengendalikan pangkalan data. 2.MYSQL menyokong pelbagai enjin penyimpanan melalui penyimpanan data yang cekap dan fungsi pengambilan semula, dan SQL melengkapkan operasi data yang kompleks melalui pernyataan mudah. 3. Contoh penggunaan termasuk pertanyaan asas dan pertanyaan lanjutan, seperti penapisan dan penyortiran mengikut keadaan. 4. Kesilapan umum termasuk kesilapan sintaks dan isu -isu prestasi, yang boleh dioptimumkan dengan memeriksa penyataan SQL dan menggunakan perintah menjelaskan. 5. Teknik pengoptimuman prestasi termasuk menggunakan indeks, mengelakkan pengimbasan jadual penuh, mengoptimumkan operasi menyertai dan meningkatkan kebolehbacaan kod.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.